Dasar Pemrograman-8 (Operasi Masukan Dan Keluaran)

download Dasar Pemrograman-8 (Operasi Masukan Dan Keluaran)

of 21

description

operasi masukkan

Transcript of Dasar Pemrograman-8 (Operasi Masukan Dan Keluaran)

  • 1

    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 keperluanmenampilkan data/informasi, turbo Cmenyediakan 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 kompilermengenai jenis data yang akan ditampilkan.Argumen

    sesudah string kontrol (argumen1, argumen2,...) adalah data yang akan di

    tampilkanke layar.Argumen inidapat berupavariabel,konstantadanbahkan

    ungkapan.

    Misal:

  • 2

    printf(%d, 20); /*argumenberupakonstanta*/ printf(%d, a); /*argumenberupavariabel*/ printf(%d, a+20); /*argumenberupaungkapan*/

    Penentuformatuntukdatastringataukarakter:

    Untukmenampilkandatabilangan,penentuformatyangdapatdipakaiberupa:

    %c untukmenanpilkansebuahkarakter%suntukmenanpilkansebuahstring

    %u untuk menampilkan data bilangan tak bertanda (unsigned) dalam bentuk desimal

    %d untuk menampilkan bilangan integer bertanda (signed) dalam %i bentuk desimal %o untuk menampilkan bilangan bulat tak bertanda dalam bentuk

    oktal %x untuk menampilkan bilangan bulat tak bertanda dalam bentuk %x 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 untuk menampilkan bilangan real %e dalam notasi eksponensial %g untuk menampilkan bilangan real %G dalam bentuk notasi seperti %f, %E atau %f tergantung oleh

    kepresisian data (Digit 0 yang tak berarti tak akan ditampilkan) l 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

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

    %G untuk menyatakan long double h merupakan awalan yang di gunakan untuk %d, %i, %o, %u, %x

    atau %X untuk menyatakan short int.

  • 3

    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 jugamemperlihatkanbahwabilapenentu format yangdigunaklan

    adalah%u.Makabilanganakandinyatakandalamsimaltakbertanda.

    /**//*fileprogramFORMXOU.C/**/#includemain(){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

  • 4

    Perbedaanpenentuformat%g,%edan%fditunjukkanpadacontohberikut.

    /**//*fileprogramFORMXOU.C/*perbedaanformat%e,%fdan%g/**/#includemain(){ floatx=251000.0; printf(Formate>%e\n,x); printf(Formatf>%f\n,x); printf(Formatg>%g\n,x);}Contoheksekusi:A>FORMEFGFormate>2.510000e+05Formatf>251000.000000Formatg>251000

    Program42

    Tampak bahwa penentu format %e menampilkan bilangan dalam bentuk

    eksponensial. Jikapenentu formatyangdigunakanberupa%f,bagianpecahan

    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

  • 5

    printf(Abad%4d,20);

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

    karakter.

    printf(Abad%4d,20);

    Gambar41

    Gambar 41 sekaligus menunjukkan bahwa nilai 20 ditampilkan rata kanan

    terhadapmedanyangdisediakan.

    /**//*fileprogramMEDNINT.C/*Untikmelihatefekpenetuanpanjangmedan/*padabilanganbulat/**/#includemain(){ intnilai=20; printf(Abad%d\n,nilai); printf(Abad%3d\n,nilai); printf(Abad%4d\n,nilai);

    printf(Abad%5d\n,nilai);}Contoheksekusi:A>MEDNINTAbad20Abad20Abad20Abad20

    A b a d 2 0

  • 6

    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.

    Gamgar42

    Denganmenentukanpanjangmedanpadapenentuformat,informasiberbentuk

    sebagaiberikutdapatdiperolehdenganmudah.

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

  • 7

    500.000

    25000.00

    1000.00

    /**//*fileprogram:MDNREAL.C/*contohpenetuanpanjangmedan/*untuktipereal/**/#includemain(){ 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 formatyangmengandungpanjangmedan secarabawaanmempunyai

    sifat yakni data akan ditampilkan rata kanan terhadap panjang medan yang

    diberikan. Hal ini berlaku bagi semua jenis data, termasuk string.Untuk data

  • 8

    stringsendiribiasanyadikehendakiagar tampilkan ratakiri.Untukmenyatakan

    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 *//**/#includemain(){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);}

  • 9

    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()

    Fungsiputs ( )digunakankhususuntukmenanpilkandata stringke layar.Sifat

    funngsi ini, string yang ditampilkan secara otomatis akan diakhiri dengan \n

    (pindahbaris).Contohpemakaian funsiputs ( )ditunjukkanpadaprogram46.

    programdigunakanuntukmenampilkantulisan

    Kucobadankucoba

    Kiniakumulaimemahaminya

    #includemain(){

    puts(Kucobadankucoba); puts(Kiniakumulaimemahaminya); }

  • 10

    program46.

    Programserupadiatasyangmenggunakanprintf()

    #includemain(){

    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);

  • 11

    Contohberikutberupaprogramyangdigunakanuntukmenampilkandua

    buahkarakterdenganmenggunakanduabuahputchar().

    /**//*fileprogram:PUTCHAR.C *//*contohmemakaiputchar *//*untukmenampilkandatakarakter *//**/#includemain(){ putchar(A); putchar(K);}Contoheksekusi:A>PUTCHARAK

    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

  • 12

    radius=20;

    Dapatdigantimenjadi:

    scanf(%f,&radius);

    Denganpemodifikasianini,programdapatdigunakanuntukmenghitungluasdan

    keliling lingkaranuntukberbagainilai jarijari tanpaharusmengubahprogram,

    melaikan cukup dengan menjalankan program dan mengisikan data melalui

    keyboard.

    Untuk memperjelas bagi pemakai program bahwa data jarijari harus

    dimasukkan, sebelumpernyataan scanf ( )perludisisipkan sebuahpernyataan

    misalnya

    printf(masukkandatajarijarilingkaran:)

    Programselengkapnyasebagaiberikut:

    /**/

    /*fileprogram:PUTCHAR.C *//*contohmemakaiPutchar *//*untukmenampilkandatakarakter *//**/#include#definePI3.141593main(){ floatradius,keliling,luas; printf(masukkandatajarijarilingkaran:); scanf(%f,&radius);

  • 13

    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> LINGKAR3Masukkandatajarijarilingkaran:5Datalingkaran:Jarijari=5.000000Keliling=31.415930Luas=39.269913

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

    Program49

    Bentuk scanf ( ) sesungguhnya menyerupai fungsi printf ( ). Fungsi ini juga

    melibatkanpenentu format yangpadadasarnya samadengan yangdigunakan

    padaprintf().Secaraumumbentukscanf()adalahsebagaiberikut:

    scanf(stringkontrol,daftarargumen);

    Denganstringkontroldapatberupa:

    penentuformat karakterspasiputih(whitespace) karakterbukanspasiputih

  • 14

    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

  • 15

    Menyatakanalamatdariradius.Dalambentukyanglengkap:

    Scanf(%f,&radius);

    Berarti (bagikompute):bacalahsebuahbilanganreal (%f )dan tempatkanke

    alamatdariradius(&radius).

    Berdasarkanbentukumumscanf(),fungsi inidapatdipakaiuntukmemasukkan

    beberapadata.Sebagaicontohdiperlihatkanpadaprogram410.padaprogram

    inidatamengenaikarakterdanjumlahnyadimasukkanmelaluipernyataan

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

    Sebuahspasisebagaipemisahdata

    Tampakdiantarapenentu format%cdan%ddiberispasi.Spasi inimenyatakan

    pembatassaatpemasukandata,sebagaicontoh:

    A20

    Dapatberupabeberapaspasi

    Padapengisiandatasepetiini,makakarekter,akanterisidenganAdanjumlah

    bernilai20.kalaumisalnyadimasukkan:

    A20

    Hasilnyasamasajakalaudiberispasi.Mengapahalinibisaterjadi?sebabstring

    kontrol

  • 16

    %c%dmenyatakanpadakomputerbacalahsebuahkarakter,kemudiankalau

    ada spasi (atau tepatnya sebarang spasiputih) abaikan saja beberapapun

    banyaknya,danberikutnyabacalahsebuahbilanganbulat.

    /**//*fileprogram:MASUKAN.C *//*contohpemasukkandatahurufdanbilanga*//*dengansatuperintahscanf()*//**/#includemain(){ charhuruf; intjumlah; puts(masukkansebuahhurufdiikutidengannilaijumlahnya!); scanf(%c%d,&huruf,&jumlah); printf(jumlahdari%cadalah%dbuah\n,huruf,jumlah);}Contoheksekusi:A>MASUKANMasukansebuahhurufdiikutidengannilaijumlahnya!A20JumlahdariAadalah20buahA>MASUKANMasukansebuahhurufdiikutidengannilaijumlahnya!

    A20

    JumlahdariAadalah20buah

    Program410

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

    dimaksudkanspasiputihdapatberupaspasi,tabatauenter (return).Jadikalau

  • 17

    dalamstringkontrol,karakterspasidigunakansebagaipemisahantarapenentu

    format,maka dalam pemasukan data sebagai pemisahnyadapat 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,berapapun jumlahspasiyangada didepannya tidak

    akanjadimasalah.Spasiakantetapdiabaikan.

    Kalaumisalnyaditulis

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

    pernyataan in i berart i (bagi komputer) "bacalah sebuah bilangan

    bulat, kemudian kalau ada spasiputih abaikan saja dan selanjutnya

    baca sebuah karakter". Dengan cara ini , karakter tidak dapat diisi

    dengan spasi L Dengan demikian pemasukandata

  • 18

    20A atau20A 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 denganENTER.Disamping

    itu,karakteryangdimasukkantakakan ditampilkan pada, layar.

    Contohpemakaian:

  • 19

    /**//*Fileproqram:GETCH.C*//*Contohpenggunaangetch() *//*untukmembacasebuahkarakter*/#include#includemain(){

    charkarakter;printf("masukkansebuahkarakter.");karakter=getch();printf("\nAndamemasukkankarakter%c",karakter);

    }

    ContohEksekusi:A>GETCHMasukkansebuahkarakterAndamemasukkankarakterAProgram411

    Padapernyataan

    karakter=getch();

    j i ka ada tombol yang di tekan , maka has i l fungs i akan diberikan

    kevariabelkarakter.Kalaumisalnya yang ditekanadalahtombolA,maka

    selanjutnyaprogramakanmenampilkan

    keteranganberupa

    AndamemasukkankarakterA

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

    dengan getch(). Perbedaannya, karakter yangdimasukkan akan ditampilkan

  • 20

    padalayar.HalinibisadilihatmelaluiProgram412.

    /**//*Fileprogram:GETCHE.C*//*Contohpenggunaangetche()*//*untukmembacasebuahkarakter*//**/#include#includemain(){

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

    }ContohEksekusi:A>GETCHEMasukkansebuahkarakter.AAndamemasukkankarakterA

    Program412

    Catatan: Programyangmenggunakanprintf(),putchar(),

    scanf()danputs()mengandungbarisyangberisi

    #include

    Sedangkanprogramyangmetibatkangetche()atau

    getch()mengandungbarisyangberisi

    #include

    Latihan41

  • 21

    Apahasildariprogramberikut:

    #include

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

    Latihan42

    Buatlah programuntukmenghitung luas dankelilingpersegipanjang.

    Rumusyangdigunakan:

    Luas=panjangxlebarKeliling=2(panjang+lebar)

    Data panjang dan lebardimasukkanmelalui keyboardsaatprogram

    dieksekusi.