Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Bab. 2 Input dan Output 2.1 Tujuan Instruksional Khusus (TIK) a. Mahasiswa dapat membedakan konstanta dengan variabel. b. Mahasiswa dapat menggunakan tipe data (integer, float, character , dan string) yang sesuai pada sebuah program. c.
Mahasiswa mampu menggunakan kata tercadang printf() untuk mencetak keluaran, dan scanf() untuk member input pada variabel dengan benar.
d. Mahasiswa mampu menggunakan penentu format sesuai dengan tipe data dari output yang diinginkan. e.
Mahasiswa mampu menggunakan kata tercadang getch(), da n getche().
f.
Mahasiswa dapat menambahkan keterangan pada program.
2.2
Pendahuluan
Input dan Output memegang peranan yang cukup penting dalam suatu program, karena bagian dari program inilah yang membuka jalur komunikasi dengan manusia. Sebelum menginjak pada pembahasan Input/Output, kita akan meninjau beberapa hal penting yang berhubungan erat dengan penggunaan Input/Output itu sendiri, seperti pengertian tentang Konstanta dan Variabel, serta tipe-tipe data yang dike nal oleh Turbo C . 2.2.1 Konstanta Konstanta adalah suatu nilai yang sifatnya tetap, misalnya angka ‘21’, ’21’ adalah ‘21’ bukan ‘30’. Jadi ‘21’ mempunyai nilai yang sudah tetap, maka ‘21’ ada lah ko nstanta. ` lain, misalkan abjad ‘k’, ‘k’ adalah ‘k’ bukan ‘s’ ataupun ‘x’, jadi ‘k’ juga mempunyai nilai atau arti yang tetap, maka ‘k’ adalah konstanta juga. Sebagai ilustrasi, kita lihat p=2, ‘p’ disini bukan lagi merupakan konstanta, karena pada saat ini ‘p’ mewakili angka ‘2’, pada kesempatan lain bias saja ‘p’ mewakili nilai yang lain pula, misalkan ‘3’ atau ‘100’, jadi ‘p’ telah lepas dari hakekat artinya (‘p’ adalah ‘p’), dalam hal ini ‘p’ buka n lagi ko nstanta , melainka n suatu variable. Secara garis besar konstanta dapat kita bagi atas dua bagian, bilangan (numerik) dan teks (string).
Hal. 6
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Bahasa C membagi konstanta bilangan (numerik) menjadi tiga kelompok, yaitu: a. Bilangan Bulat (integer) b. Bilangan Desimal Berpresisi Tunggal (floating point) Bilangan ini dapat dinyatakan dalam dua tampilan: •
Bentuk Desimal Contoh: 2.1333
•
Bentuk Ekspo nen Contoh: 2.1333e2 yang artinya 2.1333 * 102
c. Bilangan Desimal Berpresisi Ganda (double precision). Pada prinsipnya bilangan ini serupa dangan Floating Point, hanya derajad ketelitian yang dimiliki lebih tinggi. Konstanta teks dibedakan dalam dua jenis, yaitu: karakter da n string. Data karakter terdiri dari sebuah karakter saja, dan ditandai dengan dua tanda kutip tunggal (‘) sebagai pembatasnya. Karakter dapat berupa abjad, baik huruf besar maupun kecil, angka, ataupun notasi- notasi lain, seperti ^ % * dan lain- lain. Contoh: ‘A’,
‘k’,
‘2’,
‘*’ dan lain- lain.
Data string merupakan rangkaian dari beberapa karakter dan ditandai dengan tanda kutip ganda (“) sebagai pembatasnya. Contoh: “Telekomunikasi”,
“belajar”, “Semarang”,
“50
tahun”, “Jalan Telaga Blok G88 Telepon 024-7612345”, dan lain- lain. Perlu diperhatikan, bahwa Turbo C benar-benar membedakan antara data karakter dan data string, jadi janganlah beranggapan bahwa data karakter merupakan data string yang memiliki sebuah karakter. Jadi ‘J’ tidaklah sama dengan “J”. 2.2.2 Variabel Variabel dapat kita andaikan seperti sebuah tempat penampung data atau konstanta. Sedangkan konstanta lebih bersifat sebagai data yang akan mengisi variabel tersebut. Bila konstanta memiliki arti atau nilai yang selalu tetap, variabel dapat berubah- uba h. Sebuah variabel yang sama dapat mengandung data yang berbeda pada saat yang berbeda. Bahasa pemrograman apapun yang anda gunakan, variabel selau memegang peranan yang sangat besar dalam pembuatan program. Karena itu amatlah penting mempelajari sifat-sifat variabel dalam setiap bahasa pemrograman. Pemberian nama umumnya dapat dilakukan secara bebas, namun de mikian tetap ada batasan-batasan tertentu yang tidak boleh dilanggar.
Hal. 7
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Beberapa hal penting perlu diperhatikan dalam memberikan nama pada variabel Bahasa C adalah sebagai berikut: a. Nama variabel Turbo C hanya boleh terdiri dari abjad, bilangan, dan tanda hubung(_). Contoh: no1, Gaji_pegawai, Pajak_tahunan. b. Nama variabel boleh dimulai oleh tanda hubung (_) , atau abjad. Contoh: _gaji_pokok, _tunj_isteri, Laba_bersih. c. Nama variabel tidak boleh dimulai oleh angka. Contoh nama variabel yang salah:
2no,
90_tahun, 4nilai_max. d. Nama variabel tidak boleh menggunakan operator aritmatika (+-/*%). Contoh nama variabe l yang salah:
Nilai+min,
Tunj-anak,
Nama/pegawai,
Alamat*rumah,
Potongan%. e. Nama variabel tidak boleh menggunakan karakter-karakter khusus sebagai berikut: ;:,#@$^!& dan titik(.). Contoh nama variabel yang salah: Luas:segitiga, Luas;tanah! , kell@linkaran,
Sisi#kubus,
gaji$tahunan, tempat&tgl.lahir.
f. Nama variabel tidak boleh mengandung spasi. Contoh nama variabel yang salah: Gaji bulanan, _kota asal . g. Jangan menggunakan nama fungsi atau kata-kata lain yang mempunyai arti khusus dalam Turbo C (reversed words). Contoh nama variabel yang salah: main, printf, float, char. h. Nama variabel boleh terdiri dari reversed words yang digabungkan dengan kata lain. Contoh nama variabel yang benar: char_pertama, fungsi_printf, data_float, i. Turbo C membedakan antara huruf besar dan huruf kecil. Contoh: gaji, GAJI, dan Gaji, merupakan tiga nama variabel yang berbeda.
Sebuah anjuran: untuk mencegah kesalahan semacam ini sebaiknya semua nama variabel dituliskan dalam huruf kecil, kecuali bila anda dangan sengaja memang ingin menggunakan dua nama variabel yang sama untuk variabel yang berbeda, maka salah satu bias dituliskan dengan huruf besar. 2.2.3 Jenis-jenis Variabel
Hal. 8
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Seperti halnya konstanta, variabel juga terbagi menjadi dua kelompok besar, yaitu variabel numerik dan variabel teks. Variabel numerik digolongkan atas: a. Bilangan bulat atau integer Integer ini mampu menampung bilangan bulat yang bekisar antara -32,768 hingga +32,767. b. Bilangan desimal berpresisi tunggal atau floating point Dalam bentuk bilangan berpangkat floating point dapat digunakan untuk menampung data dari 10-38 hingga 1038 , sedangkan dalam bentuk decimal jenis variabel ini umumnya dapat menampung hingga 6 desimal (6 angka di belakang koma). Contoh: nilai_max=2.3e-20, Std_dev=100.234567 (6 digit di belakang titik decimal). c. Bilangan desimal berpresisi ganda atau double precision Bila data numeric yang akan diolah melebihi kapasitas yang dimiliki oleh floating point, anda dapat menggunakan double precision ini sebagai alternative. Dalam bentuk bilangan berpangkat, double precision dapat mengolah angka-angka dengan ketelitian yang berkisar antara 10-308 hingga 10+308 .Sedangkan dalam bentuk bilangan decimal mampu menampung hingga 15 digit. Jadi double precision banyak digunakan dalam hal pengolahan data numeric yang besar atau bila diperlukan tingkat ketelitian yang tinggi. Contoh: teliti=1234.5678901234, A=1.34567e-100 Sedangkan variabel teks dibedakan atas: a. Karakter (untuk karakter tunggal) Selain dapat digunakan untuk menampung sebuah karakter, variabel ini dapat pula dikonversikan dalam bentuk bilangan (ASCII code), bilangan hasil konversi data ini dinyatakan dengan bilangan bulat yang berkisar dari -128 hingga +127. b. String (untuk rangkaian karakter) String pada prinsipnya merupakan rangkaian karakter yang diakhiri dengan karakter null (‘0’). Variabel string tidak akan dibahas disini karena Turbo C menganggap string sebagai array (jajaran) dari character. Ditinjau dari nama variabel, sama sekali tidak ada perbedaan antara variabel numerik dan variabel teks. Perbedaan dari kedua jenis variabel ini hanya dapat kita pantau pada waktu variabel- variabel tersebut di deklarasikan.
Hal. 9
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
2.2.4 Deklarasi Variabel Sebelum sebuah variabel digunakan, variabel tersebut harus ‘diperkenalkan’ lebih dahulu kepada Turbo C. Proses memperkenalkan variabel kepada Turbo C ini dikenal dengan istilah Deklarasi Variabel. Deklarasi variabel ini sifatnya mutlak, artinya tanpa adanya deklarasi variabel, Turbo C tidak akan menerima variabel tersebut. Perkenalan atau deklarasi variabel meliput i tipe variabel, seperti integer atau character, dan nama variabel itu sendiri. Contoh: int gaji.
Urutan deklarasi variabel ini baku, yaitu tipe variabel dulu kemudian disusul dengan nama variabel (lihat contoh di atas). Daftar tipe variabel dapat anda lihat dalam table 2.1. Contoh: kita akan mendeklarasikan variabel jumlah sebagai integer, variabel nilai_max sebagai floating point, dan variabel gaji sebagai double precision. int jumlah; float nilai_max; double gaji; Table 2.1. Tipe-tipe variabel serta simbol yang digunakan. TIPE VARIABEL Integer Floating point Double precision Karakter
SIMBOL DEKLARASI int float double char
Beberapa variabel yang bertipe sama dapat dideklarasikan sekaligus, dengan memberikan koma (,) sebagai pemisah variabel-variabel tadi. Contoh: Kita akan mendeklarasikan variabelvariabel bil dan no sebagai integer, variabel- variabe l harga_jual, harga_be li, serta keuntungan sebagai float, dan variabel-variabel nilai_max, nilai_min sebagai double. int bil,no; float harga_beli,harga_jual,keuntungan; double nilai_max,nilai_min; Variabel dengan nama yang sama TIDAK BOLEH dideklarasikan ulang. Contoh: Kita mendeklarasikan variabel niali dua kali, pertama sebagai integer kemudian sebagai float pada program yang sama. int nilai;
Hal. 10
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
float nilai; Program ini akan memberikan pesan kesalahan redeclaration, yang berarti adanya deklarasi ulang atas variabel yanga sama. 1.2.4 Tipe-tipe Variabel Lain Selain dari jenis-jenis vaariabel yang telah diperkenalkan tadi ada variabel- variabel lain yang merupakan pengembangan dari variabel- variabel tersebut. Jenis-jenis variabel tersebut antara lain: a. Unsigned Varibel ini digunakan bila anda hanya ingin bekerja dengan data yang bernilai positif saja. Misalnya unsigned integer menerima data dari 0 hingga 65.535 (tidak lagi dari -32.768 hingga 32.676). data karakter yang bila dikonversikan dalam bentuk bilangan akan mempunyai nilai dari -128 hingga 127, dapat pula dinyatakan dalam bentuk unsigned character yang kemudian akan memiliki nila dari 0 hingga 255. Contoh: Kita akan mendeklarasikan varibel pencacah sebagai unsigned integer. Unsigned int pe ncacah; Variabel inisial akan dideklarasikan sebagai unsigned character. Unsigned char inisial; b. Short Variabel ini kadangakala disamakan dengan integer, kadangakala dibedakan, tergantung pada system dan jenis computer yang digunakan.Misalnya IBM system 370, variabel short dibuat menjadi separuh kapasitas integer.Namun dalam Turbo C kedua variabel initidak dibedakan.
c. Long variabel ini digunakan untuk menaikan kapasitas dari variabel yang bersangkutan. Misalnya long integer memiliki jangkauan bilangan bulat dari -2.147.483.648 hingga 2.147.483.647 (bandingkan dengan integer biasa yang hanya memiliki jangkauan dari 32.768 hingga 32.767). contoh: kita akan mendeklarasikan variabel harga_rumah sebagai long integer. long int harga_rumah;
Hal. 11
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
d. Gabunga n dari unsigned dan long kita dapat pula menggabungkan kedua jenis variabel tersebut, misalnya unsigned long integer yang kini jangkauan dari 0 hingga 4.294.967.295. contoh: kita akan mendeklarasikan variabel angg_belanja sebagai unsigned long integer. unsigned long int_belanja; 2.2.5 Inisialisasi Suatu Variabel Inisialisasi adalah proses pemberian nilai awal terhadap suatu variabel. Pemberian nilai terhadap suatu variabel ini dapat dinyatakan dengan penggunaan tanda sama dengan (=). Contoh: Variabel harga_satuan dan jumlah yang bertipe float terlebih dahulu akan diberi nilai sebesar 12.50 dan 40 sebelum digunakan untuk menghitung harga_total yang juga bertipe float. /* inisialisasi suatu variabel */ main() { /* deklarasi variabel */ float harga_satuan,jumlah,harga_total; /*membersihkan layar*/ clrscr(); /*inisialisasi*/ Harga_satuan=12.50; Jumlah=40; /*menghitung harga total*/ Harga_total=harga_satuan*jumlah; /*mencetak harga total*/ printf(“harga total : %f”, harga_total); getche(); } Dari contoh program di atas anda melihat adanya notasi (/*…*/) yang berarti komentar, pengertian serta contoh lebih lanjut tentang komentar ini akan dijelaskan pada topik tersendiri di akhir Bab ini. Demikian juga fungsi printf() beserta argumennya akan di bahas pada bagian lain dalam Bab ini. Dalam program tersebut anda jumpai pula fungsi clrscr() yang digunakan untuk menghapus atau membersihkan layar. Fungsi ini harus dituliskan setelah deklarasi variabel. Inisialisasi dapat juga dilakukan bersama-sama dengan deklarasi, sebagai ilustrasi lihat contoh berikut:
Hal. 12
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
/*inisialisasi bersama-sama dengan deklarasi*/ main() { /*inisialisasi bersama dengan deklarasi*/ float harga_satuan=12.50, jumlah=40, harga_total; clrscr(); /*menghitung harga total*/ Harga_total=harga_satuan*jumlah; /*mencetak harga total*/ printf(“harga total : %f”, harga_total); } Contoh program di atas ini memiliki arti yang sama seperti contoh yang telah diberikan sebelumnya. 2.2.6 Tipe-tipe Data Serta Memori Yang Digunakan Tipe variabel yang akan dipakai dalam suatu program sangat erat kaitannya dengan penggunaan memori pada komputer anda. Seringkali tipe variabel yang memiliki ketelitian tinggi mempunyai konsekuensi akan perlunya memori yang lebih besar. Oleh karena itu efisiensi suatu program antara lain juga dipengaruhi atas tepat atau tidaknya pemilihan tipe variabel yang akan anda gunakan. Janganlah anda sampai terpancing untuk menggunakan variabel dengan ketelitian yang berlebihan sehingga akibatnya program ataupun data anda membutuhkan memor i yang lebih besar. Pilihlah tipe variabe l sesuai de ngan kepe rluan, dengan demikian anda tidak menghamburkan memori untuk hal- hal yang tidak perlu. Jumlah memori yang dialokasikan untuk variabel- variabel tersebut tidak ditentukan oleh bahasa C itu sendiri, melainkan sangat tergantung pada sistem komputer serta kompiler yang digunakan. Berikut ini diberikan jumlah memori yang diperlukan untuk berbagai jenis variabel dalam Turbo C (lihat tabel 2.2). Tabe l 2.2. Hubungan antara TYPE DATA Integer Shor t Integer Long Integer Floating point Double precision Unsigned Integer Unsigned long Integer Character String
tipe data dengan memori yang diperlukan Jumlah Memory ( BYTES) 2 2 (untuk Turbo C) 4 4 8 2 4 1 Sesuai dengan jumlah karakter +1 (untuk karakter ‘null’
Hal. 13
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
2.2.7 Output program Agar hasil proses yang telah dilakukan oleh computer dapat dibaca oleh pemakai, hasil tersebut harus dapat ditampilkan dalam media output (dapat printer atau monitor atau media yang lain). Untuk menampilkan hasil proses tadi, tentunya diperlukan adanya perintahperintah atau fungsi- fungsi yang mengatur output itu. Dalam ba hasa C, salah satu fungsi output yang paling umum adalah printf(). Fungsi printf() dapat digunakan untuk mencetak data baik yang bertipe numeric atau teks, baik konstanta ataupun variabel. Contoh di bawah ini menunjukan pemakaian fungsi printf() dalam bentuk yang paling sederhana. main() { printf(“saya belajar bahasa pe mrograman C”); Fungsi
argumen
} Keluaran dari program adalah sebagai berikut :
Saya belajar bahasa pemrograman C
Contoh program berikut ini digunakan untuk mencetak konstanta string dengan konstanta atau variabel secara bersamaan. main() {
koma pemisah printf(“Jumlah ikan Koi dikolam sebanyak %d” , 14);
} Konstanta String konstanta integer Penentu format Keluaran dari program tersebut adalah Jumlah ikan Koi dikolam sebanyak 14 Di da lam contoh program diatas penentu
format
yang sebe narnya berfungsi untuk
menunjukka n dimana data lain (tidak hanya terbatas pada konstanta saja) akan diletakka n bila dicetak menjadi satu kesatuan dengan konstanta string di depannya. Program dibawah ini akan memperjelas penggunaan penentu format.
Hal. 14
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
main() { printf (“%c me rupakan abjad yang ke %d”, ‘z’,26); } Hasil output program ini adalah: z me rupakan abjad ya ng ke 26 Penggunaan penentu format berkaitan erat dengan tipe-tipe data yang akan dicetak. Artinya setiap tipe data memiliki penentu format-nya masing- masing. Pada tabel 2.3, diberikan penentu format untuk setiap tipe data yang telah anda kenal. Tabe l 2.3 penentu format untuk fungsi printf(). TIPE DATA Integer Floating Point Bentuk Desimal Bentuk Berpangkat Yang lebih pendek antara decimal dan berpangkat Double Precision Character String Unsigned Integer Long Integer Long Unsigned Integer Unsigned hexadecimal Integer Unsigned octal integer
PENENT U FORMAT UNT UK printf() %d %f %e %g %If %c %s %u %Id %Iu %x %o
Satu hal yang sangat penting dipe rhatika n ada lah urutan dari letak pe nentu for mat harus sesuai de ngan ur utan da ta yang aka n mengisi penentu format tersebut. printf(“%c me rupakan abjad yang ke %d” , ‘b’ , 2 );
Penentu format untuk ‘b’ adalah %c, sedangkan untuk 2 adalah %d. karena %c mendahului %d, maka ‘b’ harus diletakkan didepan 2. Bila urutan data yang akan diambil tidak sesuai dengan urutan penentu formatnya maka akan terjadi kesalahan program. printf(“%c me rupakan abjad yang ke %d ,2, ‘b’ );
Hal. 15
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Bila anda mencetak data yang bertipe float, seringkali tampilan yang diberikan tampak kurang manis, misalnya decimal yang dicetak terlalu banyak. Sebagai ilustrasi kita lihat contoh berikut ini: main() { float bil=2.5,nomor=30,756; clrscr(); printf(“bilangan= %f \n”, bil); printf(“nomor =%f”,nomor); } Bila program ini Anda jalankan, output yang dihasilkan akan sebagai berikut: bilanga n nomor
= 2.500000 = 30.756001
Angka desimal yang diberikan sebenarnya dapat diatur, demilkian juga dengan panjang data (panjang field-nya ). Cara mengatur lebar field dan jumlah desimal yang akan dicetak dengan format tambahan %f seperti berikut : %a.bf Lebar field
jumlah decimal
Dimana a dan b berupa bilangan bulat. Contoh dari format tersebut dapat dilihat pada contoh berikut ini : main() { float bil=0.5 , nomor=30.756; clrscr(); printf(“bilangan = %10.2f \n”, bil ); printf(“nomor” = %10.2f”,nomor); } Data tersebuat akan dicetakkan dengan format sebagai berikut: bilangan
Nomor
=
.
5 jumlah decimal = 2 0 . 7
3 lebar field = 10
Hal. 16
0
6
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Bila jumlah desimal yang ada lebih panjang dari yang akan dicetak, maka desimal tersebut akn dibulatkan ke angka terdekat, dapat dibulatkan ke atas atau ke bawah. Pengaturan lebar field juga dapat diabaikan, dengan pengertian bahwa kita tidak ambil pusing berapapun jumlah angka didepan koma, di sini yang kita perhatikan hanya jumlah angka di belakang komanya saja. Untuk keadaan yang demikian maka lebar field dapat dibuang dari format tambahan tadi. Sebagai Ilustrasi, dapat dilihat pada contoh berikut ini: main() { float bil=2.5 , nomor=30.756; clrscr(); printf(“bilangan = %2.f \n”, bil); printf(“nomor = %2f”,nomor); } Output yang dihasilkan akan menjadi: bilangan
2
.
5
0
nomor
3
0
.
7
6
penentuan lebar field berlaku juga untuk data yang bertipe integer. Berhubung integer tidak mengandung bilangan pecahan, maka pengaturan jumlah angka di belakang titik decimal tidak diperlukan. Bentuk penentu lebar field untuk integer adalah: %ad
dimana:
a adalah bilangan bulat
%10d
lebar field untuk integer ini adalah 10
contoh:
Bila lebar field ditentukan, data umumnya dicetak rata kanan. Untuk kebutuhan khusus, kita dapat juga mencetak data dalam format rata kiri dengan cara menyisipkan tanda minus (-) pada format tambahan tadi. Sebagai contoh perhatikan program berikut ini: main() { float bilangan=2.5 , nomor=30.756; printf(“bilangan = %-10.2f \n”, bilangan); printf(“nomor = %-10.2f”,nomor”); } titik ini jangan lupa
Hal. 17
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
outputnya adalah: bilangan nomor
3
0
.
7
6
Pada contoh contoh di atas Anda melihat sebuah notasi baru \n. arti notasi ini adalah teks yang terdapat setelah \n akan dicetak pada baris berikutnya. Untuk memperjelas pengertian notasi ini akan kita lihat contoh-contoh program berikut ini. main() { clrscr(); printf( “B ARIS 1” ); printf( “B ARIS 2” ); } Outputnya : BARIS 1 BARIS 2 Perhatikan, meskipun BARIS 1 dan BARIS 2 di berikan oleh dua buah fungsi printf(), namun hasil output dari kedua program tadi tetap dicetak da lam satu baris. Sekarang k ita lihat contoh berikutnya: main() { clrscr(); printf( “B ARIS 1 \n BARIS 2” ); } Program ini akan memberikan output sebagai berikut: BARIS 1 BARIS 2 Perhatikan setelah tanda \n ditemui, maka teks yang berikutnya akan dicetak dibaris bawahnya. Contoh lain: main() { clrscr(); printf( “B ARIS 1 \n ” ); printf( “B ARIS 2” ); }
Hal. 18
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Outpunya program : BARIS 1 BARIS 2 Perhatikan, bahwa antara \n de ngan karakter berikutnya tidak perlu dibe ri spa si. main() { clrscr(); printf( “B ARIS 1 ” ); printf( “\nBARIS 2” ); } Outputnya BARIS 1 BARIS 2 Karena ada spasi antara \n dengan karakter berikutnya (dalam hal ini ‘B’), maka spasi tersebut ikut tercetak. Contoh lain: main() { clrscr(); printf( “B ARIS 1 \n BARIS 2” ); } Outputnya BARIS 1 BARIS 2 \n dapat diletakka n dimana saja, bila diletakka n dalam satu baris, maka teks dalam baris tersebut akan dipenggal dalam dua baris. Contoh lain: main() { clrscr(); printf( “B ARIS 1 \nBARIS 2” ); printf( “B ARIS 3”); } Keluaran yang dihasilkan BARIS 1 BARIS 2 BARIS 3
Hal. 19
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Contoh lain: main() { clrscr(); printf( “B ARIS 1\nBARIS 2\nBARIS 3”); } Keluaran dari program diatas adalah seperti berikut: BARIS 1 BARIS 2 BARIS 3 Notasi ‘\n’ ini dike nal de ngan nama escape sequence. Selain ‘\n’ masih ada beberapa escape sequence lain yang pembahasannya dapat diikuti dalam bagian berikut ini.
2.2.8 Escape Sequence Disebut escape sequence karena notasi ‘\’ dianggap sebagai karakter “escape” (menghindari), dalam arti bahwa karakter yang terdapat setelah tanda ‘\’ dianggap bukan merupakan teks biasa. Beberapa escape sequence lainnya dapat anda lihat dalam tabel 2.4. Tabel 2.4 Escape Sequence ES CAPE S EQUENCE
\b \f \n \r \t \’ \” \\ \xaa \aaa
PENGERTIAN
Backspace Formfeed Baris Baru Carriage Return Tab (default = 8 karakter ) Tanda kutip tuggal (‘) Tanda kutip ganda (“) Backslash Kode ASCII dalam hexadecimal (aa – menunjukkan angka ASCII ybs.) Kode ASCII dalam octal (aa – menunjukkan angka ASCII ybs.)
Sebagai ilustrasi dapat dilihat contoh berikut ini:
Hal. 20
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
main() { float bil1=13.5 , bil2=45.2, bil3=4.76; float bil4=30.75 , bil5=32.1, bil6=7.5; clrscr(); printf(“%8.2 f \t%8.2f\ t%8.2f” ,bil1,bil2,bil3); printf(“\n%8.2f\t%8.2f\ t%8.2f”,bil4,bil5,bil6); } Dengan keluaran 13.50 45.20 4.76 30.75 32.10 7.50 2.2.9 Mencetak Kode ASCII Agar keluaran program ya ng dihasilka n dapat lebih menarik pembuat program dapat mengunakan karakter-karakter grafis dari kode ASCII. Cara mencetak kode ASCII ini secara tidak langsung telah ditunjukkan dalam tabel 2.4, karena kode ASCII ini sebenarnya juga merupakan bagian dari escape sequence. Namun contoh-contoh penggunaannya belum diberikan dalam topic bahaan tersebut. Disini kita akan melihat beberapa contoh cara mencetak kode ASCII. Untuk mencetak kode ASCII dalam hexadecimal ini digunakan notasi: \xaa Dimana aa merupakan bilangan ASCII dalam hexadecimal. Seba gai contoh untuk mencetak beep (bel), kode ASCII- nya 07, jadi notasi yang digunakan: \x07. main() { clrscr(); printf(“Bel be rbunyi , s etelah teks ini \x07”); } Keluarannya: Bel berbunyi , setelah teks ini
2.2.10 Input Kegunaan input tidaklah kalah pentingnya dengan output. Sebagai pengumpan data, input akan meneruskan data tersebut agar diproses oleh komputer sebelum dikeluarkan oleh output. Tiga perintah input yang ada dalam program bahasa C adalah scanf(), getche(), dan getch().
a. Fungs i scanf() Format dari fungsi scanf adalah sebagai berikut:
Hal. 21
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
scanf(“ penentu format”,&nama_variabel); Dalam penggunaanya scanf() seringkali dikombinasikan dengan printf() untuk sekedar memberikan keterangan data apakah yang harus dimasukkan dalam scanf() tersebut, karena scanf() sendiri tidak dapat digabungka n dengan teks. Selain itu, d i depa n nama variabel dalam scanf() harus digunakan ‘&’. Salah satu kesalahan yang sering dilakukan dalam penggunaan scanf() adalah lupa memberikan ‘&’ di depan nama variabel, hal ini akan mengakibatkan proses program menjadi kacau. ‘&’ dikenal sebagai operator alamat (address operator). /* pengg unaa n funsi scanf() */ main() { float bil1 , bil2 , bil3 ; clrscr(); printf(“ Masukkan bilangan pertama :”); scanf(“%f”, &bil1); printf(“ Masukkan bilangan kedua :”); scanf(“%f”, &bil2); bil3= bil1+ bil2 printf(“ Total kedua bilangan : %3f”,bil3); getche(); } Sebagai contoh kita akan menjumlahkan dua bilangan 45.5 dengan 30.25, maka output program diatas akan menjadi: Masukkan bilanga n pe rtama Masukkan bilanga n kedua Total kedua bilangan
: 45.5 : 30.25 : 75.750
Dengan adanya fungsi scanf() tidak diperlukan tanda ‘\n’ untuk berpindah baris, karena scanf(), akan memindahkan teks yang berikutnya ke baris yang baru. Misalkan fungsi printf() yang mendahului scanf() dihilangkan, maka keterangan ‘Masukkan bilangan pertama :’ dan ‘Masukkan bilangan kedua : ‘tidak akan tampil di layar. Program tidak komunikatif lagi, karena kita menjadi tidak tahu data apa yang harus dimasukkan. Jadi penggunaan printf() bersama-sama dengan scanf() aka n membuat program menjadi lebih komunikatif (userfriendly). printf(“ Masukkan bilangan Pertama :”); scanf(“%10.2f”, &bil1);
Hal. 22
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
penentu format yang digunakan dalam scanf() terdapat pada tabel 2.5. Tabe l 2.5 penentu format untuk fungsi scanf(). PENENTU FORMAT TIPE DATA UNTUK SCANF()
Integer Floating Point Bentuk Desimal Bentuk Berpa ngkat Double Precision Character String Unsigned Integer Long Integer Long Unsigned Integer Unsigned hexadecimal Integer Unsigned Octal Integer
%d %e atau %f %e atau %f %lf %c %s %u %ld %lu %x %o
Dengan menggunakan funsi scanf(), dimungkinkan untuk memasukkan beberapa data sekaligus dalam satu baris selama jumlah dan type data yang dimasukka n tadi sesuai dengan format penentu yang diberikan dalam scanf(). Data yang akan dimasukkan dapat dipisahkan dengan spasi, tab, atau dengan tanda pemisah lain sepert (,), garis hubung (-) atau titik dua (:) . pemisah data dalam input yang dimasukka n harus sama dengan pemisah data yang digunakan dalam scanf(), bila dalam scanf() data dipisahkan dengan spasi, maka data yang anda inputka n juga harus dipisahka n de ngan spasi atau bila seba gai pe misah da lam scanf(). Bila menggunakan koma, maka data yang diinputkan juga harus menggunaka n ko ma sebagai pemisah. Contoh: printf(“\nmasukka n tiga bilangan bulat : “); scantf(“%d %d %d “,& bil1,&bil2,&bil3);
Dipisahkan dengan spasi Contoh bentuk input yang diberikan: masukkan tiga bilangan bulat : 12 30 7
Hal. 23
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
dipisahka n oleh spasi contoh lain: printf(“\nMasukkan tiga bilangan dengan format float,float,inte-ger: “); scantf(“%f,%f,%f” ,&num1,&num2,&num3);
dipisahkan oleh koma cara memasukkan data untuk program ini: masukkan tiga bilangan float : 12.5,6.5,7
dipisahka n oleh ko ma b. Fungs i getche ( ) dan getch ( ) Fungsi input getche() memiliki sifat yang sedikit berbeda dari scantf(). Bila dalam scantf() jumlah karakter data yang diinputkan boleh bebas, dalam getche() hanya sebuah karakter yang dapat diterima. Bila scantf() membutuhkan tombol RETURN/ENTER untuk mengakhiri input, getche() tidak membutuhkan RETURN/ENTER, input akan dianggap selesai begitu data selesai diketikkan satu karakter, dan secara otomatis akan melanjutkan perintah-perintah berikutnya. Fungsi getche() sebenarnya merupakan singkatan (dalam bahasa inggris) dari get character and echo yang artinya lebih kurang 'menerima sebuah karakter kemudian ditampilkan'.
c. Fungsi input lain yang mirip dengan getche( ) adalah getch( ). Satu-satunya perbedaan antara kedua fungsi ini adalah getche() akan menampilkan karakter yang telah diketikkan di layar, sedangkan getch( ) hanya akan menyimpan karakter tersebut dalam memori, tanpa menampilkannya di layar. Data yang diterima melalui getch( ) juga akan diperlakukan seba gai karak ter. Untuk membandingkan kedua fungsi ini akan kita gunakan contoh program yang telah digunakan dalam getche( ), dengan menggantikannya dengan getch( ).
Hal. 24
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
2.2.11 Mendeklarasikan suatu nilai secara konstan Bila Anda mengenal Bahasa Pemrograman Pascal dengan cukup baik, di dalam bahasa ini dapat dijumpai adanya deklarasi terhadap suatu nilai yang sifatnya konstan. Pada Turbo C, dan bahasa C lain yang mengacu pada standar ANSI yang baru, pendeklarasian terhadap suatu nilai yang bersifat konstan ini juga dapat ditemui. Cara mendeklarasikan konstanta ini, cukup dengan menambahkan kata const di depan tipe dan nama variabel. Sebagai contoh, kita akan mendeklarasikan variable bil yang bertipe float dengan nilai konstanta sebesar 2.50. const float bil=2.50 Dalam baris program ini nilai variabel bil dilainya selalu tetap, yaitu 2.50. Bila kemudian ternyata aka n dilakukan pengubahan nilai bil, maka pada waktu proses COMPILE dan LINK akan muncul suatu peringatan yang menyatakan bahwa nilai konstan ini tidak dapat diubah. /* mendeklarasika n constant */ main() { float bil1,b il2; const float bil=2.50 ; clrscr(); printf(“”inp utka n suatu bilangan : “); scantf(“%f”,&bil1); printf(“”inputkan bilangan lain : “); scantf(“%f”,&bil); bil2=bil1+bil; printf(“jumlah bilangan ini dengan suatu konstanta : %f”,bil2); } Bila nilai konstanta (bil) aka n diruba h dengan menggunakan scantf(). Simpan kembali program ini kedalam disket kerja Anda, kemudian lakukan sekali lagi proses COMPILE dan RUN. Perhatikan, ternyata proses ini berjalan dengan lancar, tanpa adanya pesan kesalahan lagi, coba jalankan program ini: -
Isikan 2 pada ’inputkan suatu bilangan : ‘
-
Dan isikan 4.5 pada ‘inputkan bilangan lain : ‘
-
Ternyata jumlah yang diperoleh adalah 6.500000
Kesimpulannya:
suatu nilai konstan yang telah dideklarasikan sebelumnya, masih dapat
diubah dengan menggunakan scantf().
Hal. 25
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
2.2.12 Membe rikan Kome ntar Dalam Program Memberikan komentar-komentar atau keterangan dalam program sering kali akan membantu pemrogram dalam mempelajari atau mengecek kembali program bila terjadi kesalahankesalahan ataupun di kemudian hari ingin mengembangkan program tersebut. Dalam ba hasa C, komentar diletakkan di antara tanda ‘/*’ dan ‘*/’. Misalkan /* ini sebuah kome ntar */ . Komentar dapat dituliskan dalam huruf besar, huruf kecil, ataupun kombinasi huruf dengan karakter-karakter lain, seperti angka dan sebagainya. Komentar dapat diletakan di awal maupun di tengah program. Dapat di tuliskan pada baris yang terpisah ataupun pada baris yang sama dengan perintah-perintah lainnya. Seba gai contoh dapat dilihat pada program berikut ini: main() { /* Deklarasi variabel */ float gaji,pajak,bersih; clrscr(); /* Menghapus layar */ gaji=500000; /* gaji = gaji kotor per bulan */ pajak=50000; /* pajak = pajak per bulan */ bersih=gaji-pajak; /* bersih = gaji bersih per bulan*/ /* CETAK GAJI BERSIH PER BULAN */ printf("\nGaji bersih yang diterima: %.2f",bersih); getche(); } 2.3
Peralatan 1. 1 set computer 2. Software bahasa C
2.4
Langkah Kerja 1. Aktifkan software bahasa C, dan lakuka nlah setting directories dengan cara pilih Options pada menu utama software, kemudian pilih Directories pada sub- menu options.
Gambar 21. Tampilan Utama Kompiler Turbo C
Hal. 26
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Isikanlah letak file- file Include, Library, dan Turbo C (biasanya sama dengan letak folder TC). Isikan pula letak tempat menyimpan file- file program pada Output directory.
Gambar 22. Pengesetan Directory 2. Buatlah program seperti berikut ini, dan simpan dalam file Coba21.C dengan cara pilih File da n Save atau F2. Untuk melihat program tersebut benar atau tidak lakuka n Compile dari menu utama dan unt uk menjalanka n program lakuka n Run. /* inisialisasi suatu variabel file Coba21.C*/ main() { /* deklarasi variabel */ float harga_satuan, jumlah, total; clrscr(); /*membersihkan layar */ /*inisialisasi*/ Harga_satuan=12.50; Jumlah=40; /*menghitung harga total*/ total=harga_satuan*jumlah; /*mencetak harga total*/ printf(“harga total : %f”, total); getche(); /*menahan layar */ } 3. Buatlah program seperti berikut ini, dan File Save dalam file Coba22.C kemudian lakuka n Compile dan Run. /* mencetak tipe data karakter dan integer */ main() { clrscr(); printf (“%c merupakan abjad yang ke %d”, ‘z’,26); getche(); }
Hal. 27
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
4. Buatlah program seperti berikut ini, dan File Save dalam file Coba23.C kemudian lakuka n Compile dan Run. main() {
clrscr(); float bilangan=2.5 , nomor=30.756; pr intf(“bilangan = %-10.2f \n”,bilangan); pr intf(“nomor = %-10.2f”,nomor”); getche();
} 5. Buatlah program seperti berikut ini, dan File Save dalam file Coba24.C kemudian lakuka n Compile dan Run. /*Menghitung Luas segiempat */ main() { float panjang , lebar , luas ; clrscr(); /* Input data – panjang dan lebar */ printf(“panjang segiempat :”); scanf(“%f”, & panjang); printf(“lebar segiempat :”); scanf(“%f”, & lebar); /* Menghitung luas segiempat */ luas=panjang*lebar ; /* Mencetak luas segiempat */ printf(“\nLuas segiempat : %.4f” , luas); /* Mencetak alamt varibel- variabel yang digunakan */ printf(“\nAlamat variabel panjang: %u” ,&panjang); printf(“\nAlamat variabel Lebar : %u” ,&lebar); printf(“\nAlamat variabel Luas : %u” ,&luas); getche(); } 6. Buatlah program seperti berikut ini, dan File Save dalam file Coba25.C kemudian lakuka n Compile dan Run. /* Penggunaan fungsi getche() */ main() { /* mendeklarasikan variabel getche() */ /* nama variabel boleh sembarang */ /* da lam program ini dipilih x */ char x; clrscr();
Hal. 28
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
printf("\nSaya mempelajari penggunaan getche()"); /* contoh penggunaan getche() */ printf("\nTekan sembarang tombol"); x=getche(); /*periksa tombol yang Anda tekan */ printf("\nAnda teka n meneka n tombo l %c",x); } 7. Buatlah program seperti berikut ini, dan File Save dalam file Coba26.C kemudian lakuka n Compile dan Run. /* Penggunaan getche() tanpa variabel */ main() { clrscr(); printf("\nSaya mempelajari penggunaan getche()"); /* Contoh penggunaan getche() */ printf("\nTekan sembarang tombol"); getche(); /* periksa tombol yang Anda tekan */ printf("\nAnda telah meneka n sebuah tombo l"); }
8. Buatlah program seperti berikut ini, dan File Save dalam file Coba27.C kemudian lakuka n Compile dan Run. /* Penggunaan fungsi getch() */ main() { /* Mendeklarasikan fungsi getch() */ /* nama variabel boleh sembarang */ /* da lam program ini dipilih x */ char x; clrscr(); printf("\nSaya mempelajari penggunaan getch()"); /* Contoh penggunaan getch() */ printf("\nTekan sembarang tombol"); x=getch(); /* periksa tombol yang Anda tekan */ printf("\nAnda telah meneka n sebuah tombo l %c",x); } 9. Buatlah program seperti berikut ini, dan File Save dalam file Coba28.C kemudian lakuka n Compile dan Run.
Hal. 29
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
/* Penggunaan getche() tanpa variabe l */ main() { clrscr(); printf("\n nSaya mempelajari penggunaan getch()"); /* contoh penggunaan getch() */ /* tanpa menggunakan variabel */ printf("\nTekan sembarang tombol"); getch(); /* periksa tombol yang Anda tekan */ printf("\nAnda telah meneka n sebuah tombo l"); getche(); } 2.5
Lembar Kerja Tuliskanlah hasil dari langkah kerja 2 hingga 9 kedalam tabel berikut ini: No
2.6
Nama File
Hasil Keluaran
Pertanyaa n dan Tugas
1. Dari nama-nama variable berikut ini, mana yang benar dan mana yang salah, dan bila salah apakah penyebab kesalahan tadi. a. nama_orang
g. uang+muka
b. alamat.rumah
h. nilai*max
c. uang*
i. rata-rata
d. _alamat
j. floa t1
e. gaji bulanan
k. printf
Hal. 30
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
f. satu_c har
l. 2_data
2. Bagaimana output dari program berikut ini: /* Program Tugas 2.2 */ main() { int bil=2,bil2=3,bil13; float bil4=3.5,bil5=4.2,bil6; bil3=bil1+bil2; bil6=bil4+bil5; printf(“\n%d %10d”,bil1,bil2,bil3); printf(“\n%10.2f %10.2f”,bil4,bil5,bil6); getche(); } 3. Buatlah program untuk menghitung jumlah serta selisih dua bilangan integer. Kemudian cetaklah hasil penjumlahan serta selisih tadi denga n mengunakan format lebar field = 8. Sebagai input:
- bilangan 1 - bilangan 2
Sebagai output:
- jumlah - selisih
Ketentuan variable yang digunakan: Variable untuk
nama variable
tipe
bilangan 1
bilangan 1
integer
bilangan 2
bilangan 2
integer
jumlah
jumlah
integer
selisih
selisih
integer
Tampilan di layar yang diinginkan adalah seperti berikut: masukka n bilangan 1
:. . .
masukka n bilangan 2
:. . .
jumlah kedua bilangan
:. . .
selisih kedua bilangan
:. . .
4. Buatlah sebuah program untuk menghitung keliling segiempat dengan rumus: Kell=2*(panjang+lebar)
Hal. 31
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Bila panjang dan lebar Anda inputkan (dengan fungsi scantf()), kemudian cetaklah besar keliling yang telah dihitung dengan rumus di atas, dimana keliling d icetak de nga n format lebar field = 10 dan jumlah angka di belakang titik decimal = 3. Ketentuan-ketentuan variable yang digunakan: Variable untuk
nama variable
tipe variabel
Panjang
panjang
float
Lebar
lebar
float
Keliling
kell
float
Sedangkan tampilan yang diinginkan adalah sebagai berikut: Panjang segiempat
:. . .
Lebar segiempat
:. . .
Keliling segiempat
:. . .
5. Buatlah sebuah program sederhana untuk menghitung luas segitiga bila luas tersebut dapat dihitung dengan: Luas_sgt=0.5*alas*tinggi Sebagai input: alas tinggi sebagai output: luas segitiga ketentuan variable serta jenisnya adalah sebagai berikut: variable untuk
nama variablel
alas
alas
tinggi
tinggi
luas segitiga
luas_segitiga
tipe float float float
Tampilan yang diinginka n: Alas segitiga
:. . .
Tinggi segitiga Luas segitiga
:. . . :. . .
Hal. 32
Jobsheet Dasar Pemrograman Bab. 2: Input dan Output
Daftar Pustaka ++
1. Al Fatt, Hanif. Dasar Pemrograman C . Andi Offset, Jogyakarta, 2007. 2. Hartanto, Jogiyanto. Buku Konsep Dasar Pemrograman Bahasa C. Ando Offset, Jogyakarta, 2006. 3. Kadir, Abdul. Algoritma Pemrograman Menggunakan C++. Andi Offset, Jogyakarta, 2007. 4. Ngeon, Thomson Susabda . Pengantar Algoritma Dengan Bahasa C. Salemba Infotek, Jakarta, 2006. 5.
Nugroho, Adi. Algoritma dan Struktur Dara Dengan C. Andi Offset, Jogyakarta, 2009.
6. Partoharsojo, Hartono. Tuntunan Praktis Pemrograman Bahasa C 2.0. PT Elex Media Komputindo, Jakarta, Indonesia, 1989. 7. Supardi, Yuniar. Cara Mudah Belajar Bahasa C dan Flow Chart Dalam Praktek. Dinastindo, Jakarta, 2006.
Hal. 33