Anda di halaman 1dari 21

BABIV

OPERASIMASUKANDANKELUARAN

Memasukan data dan menampilkan data/informasi merupakan tindakan yang


sering di lakukan dalamrograman. Penampilan data/informasi biasanya di
tunjukan ke piranti layar (monitor), sedangkan pemasuukan data biasanya
dilaksanakanmelaluipappanketik(keyboard).

IV.1.MENAMPILDATA/INFORMASIKELAYAR
Untuk keperluan menampilkan data/informasi, turbo C menyediakan sejumlah
fungsi.Beberapadiantaranyaadalahberupaprintf(),puts()danputchar().

IV.1.2.printf()
Fungsi printf()merupakan fungsi yang paling umum di gunakan dalam
menampilkan data. Berbagai jenis data dapat ditampilkan ke layar dengan
memakai fungsi ini. Seperti yang di jelaskan pada bab II, bentuk umum
pernyataanprintf():

printf(string kontrol,argumen1, argumen2,....);

String kontrol dapat berupa keterangan yang akan di tampilkan pada layar
beserta penentu format (seperti %d, %f). Penentu format dipakai untuk
memberi tahu kompiler mengenai jenis data yang akan ditampilkan. Argumen
sesudah string kontrol (argumen1, argumen2,...) adalah data yang akan di
tampilkan ke layar. Argumen ini dapat berupa variabel, konstanta dan bahkan
ungkapan.
Misal:

printf(%d, 20);

/*argumenberupakonstanta*/

printf(%d, a);

/*argumenberupavariabel*/

printf(%d, a+20);

/*argumenberupaungkapan*/

Penentuformatuntukdatastringataukarakter:

%c
untukmenanpilkansebuahkarakter
%suntukmenanpilkansebuahstring

Untukmenampilkandatabilangan,penentuformatyangdapatdipakaiberupa:

%u

untuk menampilkan data bilangan tak bertanda (unsigned) dalam


bentuk desimal

%d
%i

untuk menampilkan bilangan integer bertanda (signed) dalam


bentuk desimal

%o

untuk menampilkan bilangan bulat tak bertanda dalam bentuk


oktal

%x
%x

untuk menampilkan bilangan bulat tak bertanda dalam bentuk


heksadesimal
(%x -- > notasi yang dipakai : a,b,c,d,e dan f
%x -- > notasi yang dipakai : A,B,C,D,E dan F

%f

untuk menampilkan bilangan real dalam notasi : dddd.dddddd

%e
%e

untuk menampilkan bilangan real


dalam notasi eksponensial

%g
%G

untuk menampilkan bilangan real


dalam bentuk notasi seperti %f, %E atau %f tergantung oleh
kepresisian data (Digit 0 yang tak berarti tak akan ditampilkan)

merupakan awalan yang di gunakan untuk %d, %u,%x,%x,%o


untuk menyatakan long int (misal %ld). Jika di terapkan bersama
%e, %E, %f, %F, %g atau %G akan menyatakan double

merupakan awalan yang di gunakan untuk %f, %e,%E,%g, dan


%G untuk menyatakan long double

merupakan awalan yang di gunakan untuk %d, %i, %o, %u, %x


atau %X untuk menyatakan short int.

Seandainyatanda%diinginkanuntukdirtampilkanpadalayar,makapenulisanya
harusberupaduabuahtanda%.
Contoh:

printf (komisi 10%%);

%ditulisduakali

Untukmenampilkantulisan:

Komisi10%

Contoh program berikut memberikan gambaran penggunaan %x, %o dan %u


untuk menampilkan bilangan dalam bentuk heksadesimal, oktal dan desimal.
Program ini juga memperlihatkan bahwa bila penentu format yang digunaklan
adalah%u.Makabilanganakandinyatakandalamsimaltakbertanda.

/**/
/*fileprogramFORMXOU.C
/**/
#include<stdio.h>
main()
{
unsignedintsegmen_grafik=0x8800;

printf(nilaisegmengrafik(oktal)

:%o\n,segmen_grafik);
printf(nilaisegmengrafik(desimal)

:%u\n,segmen_grafik);
printf(nilaisegmengrafik(heksadesimal)
:%x\n,segmen_grafik);
}

Contoheksekusi:
A>formxou
nilaisegmengrafik(oktal)

:104000

nilaisegmengrafik(desimal)

:34816

nilaisegmengrafik(heksadesimal)

:8800

Perbedaanpenentuformat%g,%edan%fditunjukkanpadacontohberikut.

/**/
/*fileprogramFORMXOU.C
/*perbedaanformat%e,%fdan%g
/**/
#include<stdio.h>
main()
{

floatx=251000.0;

printf(Formate>%e\n,x);

printf(Formatf>%f\n,x);

printf(Formatg>%g\n,x);
}

Contoheksekusi:

A>FORMEFG
Formate>2.510000e+05
Formatf>251000.000000
Formatg>251000

Program42
Tampak bahwa penentu format %e menampilkan bilangan dalam bentuk
eksponensial. Jika penentu format yang di gunakan berupa %f, bagian pecahan
secara bawaan ditampilkan dalam bentuk 6 digit. Sedangkan kalau penentu
formatberupa%g,makadigityangtakberartitakakanditampilkan.

Untukmenentukanpanjangmedanyangdisediakanbagitampilandata,sesudah
tanda % dalam penentu format dapat disisipi dengan bilangan bulat yang
menyatakanpanjangmedan.Misalpada

printf(Abad%4d,20);

%4d menyatakan medan untuk penampilan bilangan 20 adalah sepanjang 4


karakter.

printf(Abad%4d,20);

b a d

2 0

Gambar41

Gambar 41 sekaligus menunjukkan bahwa nilai 20 ditampilkan rata kanan


terhadapmedanyangdisediakan.
/**/
/*fileprogramMEDNINT.C
/*Untikmelihatefekpenetuanpanjangmedan
/*padabilanganbulat
/**/
#include<stdio.h>
main()
{

intnilai=20;

printf(Abad%d\n,nilai);

printf(Abad%3d\n,nilai);

printf(Abad%4d\n,nilai);
printf(Abad%5d\n,nilai);
}

Contoheksekusi:

A>MEDNINT

Abad20
Abad20
Abad20
Abad20

Untuknilaireal,spesifikasimedanberupa

m.n

Dengan:m=menyatakanpanjangmedan
n=jumlahdigitpecahan

contoh,padapernyataan

printf(harga:Rp%8.2f\n,500.0)

%8.2f menyatakan bahwa panjang medan dari bilangan real yang akan
ditampilkanadalah8karakterdenganjumlahdigitpecahan2buah.

printf(harga:Rp%8.2f\n,500.0)

Gamgar42

Denganmenentukanpanjangmedanpadapenentuformat,informasiberbentuk
sebagaiberikutdapatdiperolehdenganmudah.

500.000

25000.00

1000.00

/**/
/*fileprogram:MDNREAL.C
/*contohpenetuanpanjangmedan
/*untuktipereal
/**/
#include<stdio.h>
main()
{

printf(%8.2f\n,500.0);
printf(%8.2f\n,25000.0);
printf(%8.2f\n,1000.0);
}

Program44
Kalau hanya jumlah digit pecahan yang perlu ditentukan, panjang medan tak
perludisertakan.Misal:

printf(%.2f\n,600.0):

printf(%.2f\n,7500.25):

Hasil

600.00

7500.25

Penentu format yang mengandung panjang medan secara bawaan mempunyai


sifat yakni data akan ditampilkan rata kanan terhadap panjang medan yang
diberikan. Hal ini berlaku bagi semua jenis data, termasuk string. Untuk data

string sendiri biasanya dikehendaki agar tampilkan ratakiri. Untuk menyatakan


agardataditampilkanratakiri,sesudahtanda%padapenentuformat%sperlu
disisipidengantanda(minus).Contoh:

%24s

Menyatakanbahwastringditampilkandalammedandenganpanjang24karakter
dandiaturratakiri.Contohpenerapanyamisalnyauntukmembuattabelsebagai
berikkut:

|RD21|RadioSANWA2band|Rp24000|
|TV111|TelevisiITO14inch/bw|Rp150000|
|TR70|TaperecorderSONO21x|Rp176500|

Ratakiri
RataKiri

RataKanan

/**/
/*fileprogram:TABELBRG.C

*/
/*contohmembuattableyangberisidatastringdan*/
/*bilangan.Stringdiaturratakiridanbilangan
*/
/*diaturratakanan

*/
/**/

#include<stdio.h>
main()
{

printf("|%6s|%24s|Rp%6ld|\n","RD21","RadioSANWA2band",24000L);
printf("|%6s|%24s|Rp%6ld|\n","TV111","TelevisiITO14inch/bw",150000L);
printf("|%6s|%24s|Rp%6ld|\n","TR70","TaperecorderSONO21x",176500L);

Program45

Kalautandatidakdisertakanpada%6sdan%24s,hasilnyaakanberupa:

|RD21|RadioSANWA2band|Rp24000|
|TV111|TelevisiITO14inch/bw|Rp150000|
|TR70|TaperecorderSONO21x|Rp176500|
_____________________________________________
RataKanan RataKanan
RataKanan

Catatan:*%6ldmeupakanpenentuformatuntuklongint

*akhiranLpada24000menyatakankonstantalongint

IV.1.2.puts()
Fungsi puts ( ) digunakan khusus untuk menanpilkan data string ke layar. Sifat
funngsi ini, string yang ditampilkan secara otomatis akan diakhiri dengan \n
(pindah baris). Contoh pemakaian funsi puts ( ) ditunjukkan pada program 46.
programdigunakanuntukmenampilkantulisan

Kucobadankucoba

Kiniakumulaimemahaminya

#include<stdio.h>
main()
{

puts(Kucobadankucoba);

puts(Kiniakumulaimemahaminya);
}

program46.

Programserupadiatasyangmenggunakanprintf()

#include<stdio.h>

main()
{

printf(Kucobadankucoba\n);

printf(Kiniakumulaimemahaminya\n);
}

Program47

Dibandingkan dengan printf( ), puts( ) mempunyai kode mesin yang lebih


pendek. Sebagai perbandingan berdasarkan pengujian, program 46 dalam
bentuk. EXE mempunyai ukuran 7654 byte, sedangkan program 47 dalam
bentuk.EXEberukuran9545byte.

IV.1.3.putchar()
Fungsi putchar ( ) digunakan khusus untuk menampilkan sebuah karekter ke
layar.Penampilankaraktertidakdiakhiridenganperpindahanbaris.
Contoh:
putchar(A);
Menghasilkankeluaranyangsamadengan

printf (%c,A);

10

Contohberikutberupaprogramyangdigunakanuntukmenampilkandua

buahkarakterdenganmenggunakanduabuahputchar().

/**/
/*fileprogram:PUTCHAR.C

*/
/*contohmemakaiputchar

*/
/*untukmenampilkandatakarakter

*/
/**/
#include<stdio.h>
main()
{

putchar(A);

putchar(K);
}

Contoheksekusi:

A>PUTCHAR
AK

Program48

IV.2.Memasukkandatadarikeyboard
Data dapat dimasukkan lewat keyboad saat eksekusi berlangsung. Untuk
keperluanini,turboCmenyediakansejumlahfungsi,diantaranyaadalahscanf(),
getch()dangetche().

IV.2.1.scanf()
Fungsi scanf( ) merupakan fungsi yang dapat digunakan untuk memasukkan
berbagai jenis data. Misalnya saja, untuk memasukkan data jarijari lingkaran
padaprogram320,penulisan

11

radius=20;

Dapatdigantimenjadi:

scanf(%f,&radius);

Denganpemodifikasianini,programdapatdigunakanuntukmenghitungluasdan
keliling lingkaran untuk berbagai nilai jarijari tanpa harus mengubah program,
melaikan cukup dengan menjalankan program dan mengisikan data melalui
keyboard.

Untuk memperjelas bagi pemakai program bahwa data jarijari harus


dimasukkan, sebelum pernyataan scanf ( ) perlu disisipkan sebuah pernyataan
misalnya

printf(masukkandatajarijarilingkaran:)

Programselengkapnyasebagaiberikut:

/**/
/*fileprogram:PUTCHAR.C

*/
/*contohmemakaiPutchar

*/
/*untukmenampilkandatakarakter

*/
/**/
#include<stdio.h>

#definePI3.141593

main()
{

floatradius,keliling,luas;

printf(masukkandatajarijarilingkaran:);

scanf(%f,&radius);

12

keliling=2*PI*radius;
luas=0.5*PI*radius*radius;
printf(Datalingkaran:\n);
printf(Jarijari=%f:\n,radius);
printf(Keliling=%f:\n,keliling);
printf(Luas=%f:\n,luas);

Contoheksekusi:

A> LINGKAR3
Masukkandatajarijarilingkaran:5
Datalingkaran:
Jarijari=5.000000
Keliling=31.415930
Luas=39.269913

A> LINGKAR3
Masukkandatajarijariliingkaran:7.5
Datalingkaran:
Jarijari=7.500000
Keliling=47.123894
Luas=88.353700

Program49
Bentuk scanf ( ) sesungguhnya menyerupai fungsi printf ( ). Fungsi ini juga
melibatkan penentu format yang pada dasarnya sama dengan yang digunakan
padaprintf().Secaraumumbentukscanf()adalahsebagaiberikut:

scanf(stringkontrol,daftarargumen);

Denganstringkontroldapatberupa:

penentuformat

karakterspasiputih(whitespace)

karakterbukanspasiputih

13

penentu format menyaatakan jenis data yang akan dibaca. Pada scanf ( )
penentuformatdapatberupasalahsatudiantarayangadapadadaftarberikut:

Tabel41.penentuformatpadascanf()
KodeArti
%cmembacasebuahkarakter
%smembacasebuahstring
%iatau%dmembacasebuahintegerdesimal
%eatau%fmembacasebuahbilanganreal
(biasdalambentukeksponensial)
%omembacasebuahintegeroktal
%xmembacasebuahintegerheksadesimal
%umembacasebuahintegertakbertanda
lAwalanuntukmebacadatalongint(missal:%ld)atau
untukmembacadatadouble(missal:%lf)
LAwalanuntukmebacadatalongdouble(missal:%Lf)
hAwalanuntukmembacadatashortint

Pada bentuk scanf(), daftar argument dapat berupa satu atau beberapa
argumentdanharuslahberupaalamat.Misalnyahendakmembacadatabilangan
realdanditempatkankevariabelradius,makayangditulisdalamscanf()adalah
alamat dari radius. Untuk menyatakan suatu alamat dari variabel, didepan
variabel,di depan variabel dapat di tambahkan data & ( tanda & dinamakan
sebagaioperatoralamat).Sebagaicontoh,padaprogram48

&radius

14

Menyatakanalamatdariradius.Dalambentukyanglengkap:

Scanf(%f,&radius);

Berarti (bagi kompute): bacalah sebuah bilangan real ( %f ) dan tempatkan ke


alamatdariradius(&radius).

Berdasarkanbentukumumscanf(),fungsiinidapatdipakaiuntukmemasukkan
beberapadata.Sebagaicontohdiperlihatkanpadaprogram410.padaprogram
inidatamengenaikarakterdanjumlahnyadimasukkanmelaluipernyataan

Scanf(%c%d,&karakter,&jumlah);

Sebuahspasisebagaipemisahdata

Tampakdiantarapenentu format %cdan%ddiberispasi.Spasiinimenyatakan


pembatassaatpemasukandata,sebagaicontoh:

A20

Dapatberupabeberapaspasi

Padapengisiandatasepetiini,makakarekter,akanterisidenganAdanjumlah
bernilai20.kalaumisalnyadimasukkan:

A20

Hasilnyasamasajakalaudiberispasi.Mengapahalinibisaterjadi?sebabstring
kontrol

15

%c%dmenyatakanpadakomputerbacalahsebuahkarakter,kemudiankalau
ada spasi (atau tepatnya sebarang spasiputih) abaikan saja beberapapun
banyaknya,danberikutnyabacalahsebuahbilanganbulat.

/**/
/*fileprogram:MASUKAN.C

*/
/*contohpemasukkandatahurufdanbilanga*/
/*dengansatuperintahscanf()*/
/**/
#include<stdio.h>

main()
{

charhuruf;

intjumlah;

puts(masukkansebuahhurufdiikutidengannilaijumlahnya!);

scanf(%c%d,&huruf,&jumlah);

printf(jumlahdari%cadalah%dbuah\n,huruf,jumlah);
}

Contoheksekusi:

A>MASUKAN
Masukansebuahhurufdiikutidengannilaijumlahnya!
A20
JumlahdariAadalah20buah

A>MASUKAN
Masukansebuahhurufdiikutidengannilaijumlahnya!
A20
JumlahdariAadalah20buah

Program410

Pada uraian fungsi scanf ( ) di depan terdapat istilah spasiputih. Yang


dimaksudkanspasiputihdapatberupaspasi,tabatauenter(return).Jadikalau

16

dalamstringkontrol,karakterspasidigunakansebagaipemisahantarapenentu
format, maka dalam pemasukan data sebagai pemisahnya dapat berupa salah
satudiantarayangtergolongsebagaikarakterspasiputih.Sebagaicontoh:
1. menggunakanENTER
A>MASUKAN
Masukkansebuahhurufdiikutidengannilaijumlahnya!
Aenter
20enter
JumlahdariAadalah20buah

2. meggunakanTAB
A>MASUKAN
Masukkansebuahhurufdiikutidengannilaijumlahnya!
Atab20
JumlahdariAadalah20buah

Pada Program 410, beberapa karakter spasi bisa digunakan sebagai


pemisahantaradatakarakterdanbilangan,padasaatpemasukandata.Sebab
bagidatabilangan, berapapunjumlahspasi yang ada di depannya tidak
akanjadimasalah.Spasiakantetapdiabaikan.
Kalaumisalnyaditulis

scanf("%d%c",&jumlah,&karakter);

pernyataan ini berarti (bagi komputer) "bacalah sebuah bilangan


bulat, kemudian kalau ada spasiputih abaikan saja dan selanjutnya
baca sebuah karakter". Dengan cara ini, karakter tidak dapat diisi
denganspasiLDengandemikianpemasukandata

17

20A atau
20A
atau
90tabA

akanmembuatjumlahberisi20dankarakterberisi'A'.

Di depan telah dikatakan bahwa string kontrol dapat mengandung


karakter bukan spasiputih. Karakter semacam. ini bisa dipakai sebagai
pembatas dalam pemasukan data. Sebagai contoh diinginkan pembatas
berupatandakoma.Penulisanpadascanf():

scanf(%c,%d,&karakter,&jumlah);

sebuahtandakoma

Padapernyataanini,datakarakterdanjumlahnyaharusdipisahkan
dengankoma.Misalnya:

A,20

tandakomasebagaipemisahdata

IV.2.2.getch()dangetche()
Fungsi getch() dipakai untuk membaca sebuah karakter, dengan sifat
karakter yang dimasukkan tak perlu diakhiri dengan ENTER. Disamping
itu,karakteryangdimasukkantakakanditampilkanpada,layar.
Contohpemakaian:

18

/**/
/*Fileproqram:GETCH.C*/
/*Contohpenggunaangetch()
*/
/*untukmembacasebuahkarakter*/

#include<stdio.h>
#include<conio.h>
main()
{
charkarakter;
printf("masukkansebuahkarakter.");
karakter=getch();
printf("\nAndamemasukkankarakter%c",karakter);
}

ContohEksekusi:

A>GETCH

Masukkansebuahkarakter
AndamemasukkankarakterA

Program411
Padapernyataan

karakter=getch();

j i k a a d a t o m b o l y a n g d i t e k a n , m a k a h a s i l f u n g s i a k a n diberikan
kevariabelkarakter.KalaumisalnyayangditekanadalahtombolA,maka
selanjutnyaprogramakanmenampilkan
keteranganberupa

AndamemasukkankarakterA

Selain getch() terdapat pula fungsi bernama getche(). Kegunaannya sama,


dengan getch(). Perbedaannya, karakter yang dimasukkan akan ditampilkan

19

padalayar.HalinibisadilihatmelaluiProgram412.

/**/
/*Fileprogram:GETCHE.C*/
/*Contohpenggunaangetche()*/
/*untukmembacasebuahkarakter*/
/**/

#include<stdio.h>
#include<conio.h>
main()

{
charkarakter;
printf(Masukkansebuahkarakter.);
karakter=getche();
printf(\nAndamemasukkankarakter%c,karakter);
}

ContohEksekusi:

A>GETCHE

Masukkansebuahkarakter.A
AndamemasukkankarakterA

Program412
Catatan:

Programyangmenggunakanprintf(),putchar(),
scanf()danputs()mengandungbarisyangberisi

#include<stdio.h>

Sedangkanprogramyangmetibatkangetche()atau
getch()mengandungbarisyangberisi
#include<conio.c>
Latihan41

20


Apahasildariprogramberikut:

#include<stdio.h>

main()
{
puts(Dimanaadakemauan);
printf(Disituadajalan);
putchar(_);
}

Latihan42

Buatlahprogramuntukmenghitungluasdankelilingpersegipanjang.
Rumusyangdigunakan:
Luas=panjangxlebar
Keliling=2(panjang+lebar)

Datapanjangdanlebardimasukkanmelaluikeyboardsaatprogram
dieksekusi.

21