Anda di halaman 1dari 72

10/5/2007

Teknik Informatika | Eko Kurniawan Khannedy


UNIKOM
PEMROGRAMAN C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB I
PENDAHULUAN
IF
Apakah Bahasa C Itu ?
Bahasa C atau C++ adalah suatu bahasa pemrograman Bahasa C termasuk
sebagai bahasa pemrograman tingkat menengah! maksudnya bahasa C bisa
dipela"ari dengan lebih mudah karena mudah dimengerti tetapi mempunyai
kemampuan yang tinggi
Bahasa C bisa digunakan untuk merekayasa program untuk segala
kebutuhan! baik untuk aplikasi bisnis! matematis atau bahkan game
#emua bahasa mempunyai kelemahan atau kelebihan sendiri$sendiri Begitu
"uga dengan bahasa C %dapun sebagian kelebihan dari bahasa C adalah sebagai
berikut &
Banyak memiliki operator untuk mengolah / memanipulasi data
Bahasa C termasuk sebagai bahasa yang terstruktur sehingga program dapat
lebih mudah dipahami atau dikembangkan
Bahasa C lebih mudah dimengerti karena lebih mirip kepada bahasa manusia
Ke'epatan eksekusi tinggi
(engenal data pointer
#edangkan kelemahan dari bahasa C adalah &
Banyaknya operator atau 'ara penulisan program kadang menimbulkan
kebingungan para pemakainya
)erlunya ketelitian dalam penulisan program karena perintah *statement+
dalam bahasa C bersi,at 'ase sensiti- *huru, kapital dan huru, ke'il
dibedakan
Kekurangan$kekurangan tersebut akan banyak ter"adi pada awal$awal
mempela"ari bahasa C .etapi setelah sering membuat program atau
mempela"arinya maka kesulitan tersebut sedikit demi sedikit akan berkurang
)emrograman C
Eko Kurniawan Khannedy
Memanggil Program Turbo C
/ntuk masuk ke dalam lingkungan .urbo C++! ada beberapa 'ara yang bisa
dilakukan! 'ara$'ara berikut disusun dengan asumsi bahwa pemakai sedang
memakai sistem operasi window
1 0asilitas Run dari start menu
Klik tombol Start kemudian pilih (enu Run
Klik tombol Browse kemudian 'ari ,older yang didalamnya terdapat ,ile
.CE1E Biasanya berada pada C&2.C2B34 atau C&2.C atau C&2./5B6C7!
kemudian klik .CE1E
.ekan tombol 6K! tunggu sampai mun'ul program C++
2 (#$86# )rompt
Klik tombol Start kemudian menu Program lalu pilih MS-DOS Prompt
Ketik perintah C82.C2B34 "ika program C++ disimpan pada subdirektori
C&2.C2B34 kemudian tekan tombol Enter
Ketik .CE1E atau .C! kemudian tekan Enter! tunggu sampai mun'ul
program C++
7 #hort Cut
Klik tombol kanan mouse di desktop kemudian pilih sub menu New pada
menu popup kemudian )ilih Short Cut
Klik tombol Browse kemudian 'ari ,ile .CE1E di subdierktori C&2.C2B34
atau C&2.C Kemudian klik tombol Next! tulis nama short 'utnya!
kemudian klik tombol Next )ilih i'on short 'ut kemudian tekan tombol
Finish
/ntuk men"alankannya! double Klik di short 'ut yang telah dibuat
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB II
PROGRAM PERTAMA
IF
Contoh Program Berbahasa C
/ntuk membuat program dalam C++ maka langkah pertama adalah
memanggil program C seperti yang telah di"elaskan pada Bab 3
.ulis program berikut pada layar editornya
/*
Program Ke 1
Nama File : Lat-1.CPP
*/
// Program Hello
#include stdio.!
#include "conio.#
main$%
&
'rint($)ni Program *a+a ,ang Pertama-n!%.
'rint($-n*a+a /ela0ar /aasa C11-n 2i -!3N)K45-!-n/andung.!%.
getc$%.
return 6.
7
)rogram Ke$1 9at$1C))
#etelah selesai menulis perintah tersebut simpan program tersebut dengan
menekan tombol F atau !lt"F # Sa$e .ulis nama ,ile dengan ketentuan hanya
terdiri dari : huru, tanpa spasi ;ika telah ditulis tekan tombol Enter atau klik
tombol 6K 0ile$,ile tersebut berekstensi C atau C))
/ntuk memeriksa apakah program yang telah ditulis itu bisa dimengerti
oleh kompiler bahasa C! maka perlu dilakukan langkah Compile dengan 'ara
tekan Menu Compile atau !lt"C kemudian pilih Compile atau dengan menekan
tombol !lt"F% ;ika masih ada kesalahan! maka akan diperlihatkan dibaris mana
kesalahan penulisan program ter"adi! perbaiki program kemudian compile ulang
sehingga mun'ul keterangan bahwa compile berhasil/sukses
)roses compile hanya memeriksa program se'ara bahasa sa"a dan belum
mengeksekusi / men"alankan programnya /ntuk men"alankan program maka
tekan menu Run kemudian pilih sub menu Run atau dengah hotkey Ctrl+0<
)roses 5un ini sebenarnya melakukan dua langkah yaitu proses compile dan
men"alankan programnya
#etelah proses run ter"adi! maka akan ter'ipta suatu ,ile berekstensi E1E
yang mempunyai nama seperti nama ,ile C++ nya #uatu ,ile E1E dapat langsung
)emrograman C
Eko Kurniawan Khannedy
di"alankan di semua komputer walaupun di komputer tersebut tidak terdapat
program C++
)rogram tersebut ketika di"alankan akan menghasilkan tulisan dilayar
sebagai berikut &
)ni Program *a+a ,ang Pertama
*a+a /ela0ar /aasa C11
2i 3N)K45!
/andung.
Keterangan )rogram 9at$1C))
Komentar
)ada baris ke$1! ditemukan tanda /= dan pada baris > ditemukan tanda =/
Kedua tanda tersebut berpasangan yang berguna untuk menuliskan suatu
komentar tentang program atau perintah$perintah Komentar tidak
mempengaruhi program karena komentar tidak di"alankan seperti perintah
*statement+ Komentar dengan menggunakan tanda /= berlaku sampai
ditemukan tanda =/ Cara lain untuk memberikan komentar adalah dengan
memberikan tanda garis miring 2 kali Komentar dengan tanda ini hanya
berlaku pada 1 baris sa"a Komentar bersi,at opsional untuk mempermudah
orang mengetahui ,ungsi dari suatu program atau suatu algoritma
&in'lu(e
)ada baris ? ditemukan perintah @in'lude AstdiohB dan pada baris 7 terdapat
perintah @in'lude C'oniohD Kedua perintah tersebut digunakan untuk
memanggil ,ile header *in'lude ,ile+ yang didalamnya terdapat perintah! ,ungsi
atau prototype yang bisa digunakan dalam program yan dibuat ;ika perintah
@in'lude ini tidak ditulis! maka komputer tidak mengerti perintah$perintah
yang ditulis
)ea(er *ile
4ama ,ile yang digunakan dalam @in'lude seperti 'onioh dan stdioh! disebut
sebagai header ,ile karena ditempatkan di paling atas program EEtention F
berarti header 8alam ,ile header ini! terdapat ,ungsi atau prototipe yang bisa
digunakan dalam program #ebuah ,ile header memiliki lebih dari 1 ,ungsi
atau -ariabel global
0ile header stdioh digunakan untuk penanganan input / output standar
seperti penulisan ke layar! ke ,ile atau pemba'aan data dari keyboard atau
,ile
)emrograman C
Eko Kurniawan Khannedy
0ile header stdioh digunakan untuk penanganan ke layar seperti pengaturan
warna! waktu "eda *delay+! suara internal
(asih banyak ,ile header standar selain stdioh dan 'onioh
Fungsi main+,
)ada baris : terdapat pendeklarasian ,ungsi main*+ 0ungsi ini adalah suatu
,ungsi khusus yang akan dieksekusi pertama #etiap program harus
mempunyai ,ungsi main*+ 0ungsi main*+ diawali dengan tanda G yang
menyatakan awal dari program dan diakhiri dengan tanda H yang menyatakan
akhir dari program
print*+,
print,*+ adalah suatu ,ungsi yang berguna untuk menulis pesan ke layar
)esan yang akan ditulis dalam diapit oleh tanda kutip )esan yang tertulis
dapat diatur dengan mengatur ,ormat dari penulisannya 0ungsi print,*+ tidak
hanya menulis pesan dalam 1 baris sa"a tetapi bisa lebih
/ntuk berpindah baris maka gunakan perintah 2n yang berarti new line *baris
baru+ )enulisan 2n boleh ditempatkan di depan! ditengah atau diakhir
/ntuk menuliskan tanda A *kutip+ maka harus digunakan tanda 2B
Keterangan lebih lan"ut akan diterangkan dalam bab$bab berikutnya
-an(a . +semikolon,
#etiap perintah harus diakhiri dengan tanda I Filangnya tanda I akan
menyebabkan kesalahan kompile
get'h+,
get'h*+ adalah suatu ,ungsi yang ber,ungsi untuk pemba'aan data sebuah
karakter! sehingga program akan terdiam sampai pengguna menekan suatu
tombol 0ungsi ini berada dalam ,ile header 'onioh sehingga perintah
@in'lude A'oniohB harus dituliskan Kalau perintah get'h*+ tidak ditulis! maka
program akan diker"akan dengan 'epat dan eksekusi tidak dapat terlihat
return
return adalah perintah yang memberikan nilai kepada ,ungsinya #etiap ,ungsi
harus mempunyai nilai kembaliannya *return -alue+
Catatan Kalau eksekusi yang dilakukan 'epat! untuk melihat hasil akhir dari
eksekusi program dapat dilakukan dengan 'ara menekan %lt$05 atau
dengan memilih menu /in(ow kemudian pilih sub menu 0ser
S'reen
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB III
TIPE DATA, VARIABEL & OPERASI
PERHITUNGAN
IF
Tipe Data
Komputer bisa diartikan sebagai alat untuk menghitung /ntuk melakukan
proses perhitungan tersebut! maka dibutuhkan data yang akan diproses .ipe
data ada beberapa "enis yaitu &
.ipe data karakter
.ipe data bilangan bulat
.ipe data bilangan pe'ahan
;ika kita membutuhkan suatu tipe data yang baru yang tidak terdapat pada
tipe data standar! maka kita dapat membuat tipe data baru dengan
menggunakan perintah stru't )erintah stru't akan di"elaskan pada bab
selan"utnya
#etiap tipe data mempunyai "angkauan nilai yang berbeda
12 -ipe (ata karakter
/ntuk tipe data karakter kita gunakan perintah 'har
Contoh
car 8ara8ter.
car 8ar198ar:98ar;.
car 8ar<=>?>.
car 8ar@=A@.
.ipe data ini mempunyai "angkauan dari 0 sampai 255 atau karakter %#C33
ke 0 sampai karakter %#C33 255 .ipe data karakter bisa ditampilkan sebagai
suatu karakter atau sebagai suatu bilangan Fal ini tergantung dari bagaimana
penulisannya apakah dianggap sebagai karakter atau sebagai bilangan
/ntuk menuliskan isi dari data bertipe 'har adalah dengan menggunakan
print, dengan ,ormat penulisannya menggunakan tanda J' kalau ingin
ditampilkan sebagai suatu karakter atau dengan Ji "ika ingin ditampilkan sebagai
suatu angka
)emberian nilai kepada suatu karakter digunakan perintah sebagai berikut &
8ara8ter=>?>.
%tau
8ara8ter=A@.
)emrograman C
Eko Kurniawan Khannedy
Kedua 'ara tersebut menghasilkan suatu e,ek yang sama yaitu memberikan
nilai ?5 atau karakter % ke -ariabel karakter Kalau pengisian -ariable ingin
menggunakan karakter maka karakter yang akan dimasukan harus diapit dengan
tanda apostro,
/ntuk melihat nilai yang ada dalam suatu -ariable yang bertipe 'har
gunakan perintah berikut &
'rint($Kara8ter diliat dalam Bentu8 8ara8ter = Cc.-n!98ara8ter%.
'rint($Kara8ter diliat dalam Bentu8 ang8a = Cd.-n!98ara8ter%.
Contoh program
//Program Ke-: Nama File : Lat:.CPP
#include "stdio.#
#include "conio.#
main$%
&
car 8198:.
81=>?>.
8:=81.
'rint($Nilai DariaBle K1 adala Cc-n!981%.
'rint($Nilai DariaBle K: dalam Bentu8 ang8a = Cd-n!98:%.
getc$%.
return 6.
7
Fasil dari eksekusi program adalah &
Nilai DariaBle K1 adala ?
Nilai DariaBle K: dalam Bentu8 ang8a = A@
Keterangan program 3at2CPP
)erintah Acar 8198:.B pada baris ? berarti program memesan 2 buah
tempat di memori untuk menyimpan data bertipe karakter dengan nama k1 dan
k2
)erintah A81=>?>.B pada baris 7 adalah perintah untuk memasukan nilai
karakter % kapital ke dalam -ariable k1 sehingga untuk baris berikutnya k1 berisi
karakter % kapital atau angka ?5
)erintah A8:=81.B pada baris : berarti bahwa nilai k2 diisi dari nilai k1
sehingga isi k2 sama dengan isi -ariable di k1
)erintah print, pada baris < berarti perintah penulisan ke layar sesuai
dengan ,ormat A4ilai -ariable k1 adalah J'2nB Karakter J' tidak di'etak sebagai
J' tetapi akan diganti dari -ariable yang sesuai dengan urutannya yaitu k1
dalam bentuk karakter )erintah print, pada baris 10 'ara ker"anya sama dengan
perintah print, pada baris < bedanya hanya tanda Jd berasal ditulis berdasarkan
)emrograman C
Eko Kurniawan Khannedy
isi -ariable k2 yang di'etak dalam bentuk angka bukan karakter .anda Jd
digunakan untuk ,ormat pen'etakan data dalam bentuk bilangan bulat
)erintah getc$% digunakan untuk menunggu sampai pengguna menekan
sembarang karaker
)erintah return digunakan untuk memberikan nilai kembalian dari ,ungsi
main*+

2 -ipe (ata 4ilangan 4ulat
%da beberapa tipe data standar yang digunakan untuk data bilangan bulat
-ipe Data Memori Format 5angkauan Nilai
int 2 byte Jd/Ji $727?: s/d 727?7
unsigned int 2 byte Ju 0 s/d ?5575
'har 1 byte Jd/Ji $12: s/d 127
unsigned 'har 1 byte Ju 0 s/d 255
unsigned long > byte Jlu 0 s/d >2<><?72<5
long > byte Jld/Jli $21>7>:7?>: s/d 21>7>:7?>7
.ipe$tipe data yang ada dalam table tersebut khusus untuk data yang nilai
bilangannya bulat Cara pendeklarasian tipe data ini sama seperti pendeklarasian
lainnya! yaitu &
int a.
unsigned int B.
car c.
long d.
Contoh )rogram &
#include "stdio.#
#include "conio.#
main$%
&
int a=16669B=A<666.
unsigned int c=A<666.
'rint($ENilai +ang tela dimasu8an-na: Ci dan B: Ci-nE9a9B%.
'rint($ENilai +ang tela dimasu8an : Cu-nE9c%.
getc$%.
return 6.
7
)erintah di atas akan menampilkan hasil seperti di bawah ini &
a: 1666 dan B: -1@;A
Nilai +ang tela dimasu8an : A<666
)emrograman C
Eko Kurniawan Khannedy
62 -ipe (ata 4ilangan pe'ahan
.ipe data untuk bilangan pe'ahan terdiri dari beberapa "enis yaitu &
-ipe Data Memori Format 5angkauan Nilai
,loat > byte J, 7>=*10K$7:+ $ 7>=*10K+7:
double : byte J, 17=*10K$70:+ $ 17=*10K+70:+
long double 10 byte Jl, 7>=*10K$><72+ $ 11=*10K+><72+
Contoh )rogram
#include "stdio.#
#include "conio.#
main$%
&
(loat a=1:;<@AFGH61:;<@AFGH.
douBle d=1:;<@AFGH61:;<@AFGH.
'rint($ENilai a adala : C;6.:6(-nE9a%.
'rint($ENilai d adala : C;6.:6(-nE9d%.
getc$%.
return 6.
7
Fasil eksekusi program dapat dilihat di bawah ini &
Nilai a adala : 1:;<@AFH;H@@6A6H<16.66
Nilai d adala : 1:;<@AFGH61:;<@AFF6.66
72 -ipe (ata string
8alam pemrograman C! untuk -ariabel yang menampung data string tidak
ada perintah khusus! karena dalam bahasa C! string adalah sebuah array
karakter atau sebuah pointer ke sebuah -ariabel 'har
Cara pendeklarasian adalah &
car namaI@6J.
car *alamat.
Contoh program &
#include "stdio.#
#include "conio.#
main$%
&
car namaI@6J. //de8larasi dengan cara arra+
car *alamat. //de8larasi dengan cara 'ointer
'rint($ENama : E%.scan($ECsE9nama%.
'rint($E?lamat : E%.gets$alamat%.
'rint($E2ata +ang tela dimasu8an adala : -nE%.
'rint($ENama : Cs-n?lamat : Cs-nE9nama9alamat%.
getc$%.
return 6.
7
Catatan )emilihan tipe data harus hati$hati )ertimbangkan "angkauan
yang dimiliki oleh tipe data yang dipilih Kesalahan dalam memilih tipe
)emrograman C
Eko Kurniawan Khannedy
data akan menimbulkan suatu hasil yang tidak diperkirakan Contoh &
int a=;:666.
int B=FAH.
int c.
c=a1B.
'rint($Ci 1 Ci = Ci-n!9a9B9c%.
;ika program tersebut di"alankan! maka akan menghasilkan
output seperti berikut &
72000 + 7?< L $727?7
Fal tersebut ter"adi karena "angkuan nilai ' sudah melebihi
"angkauan nilai untuk sebuah tipe data int Bila suatu -ariable telah
melebihi "angkauan nilainya maka nilai -ariable tersebut akan
berputar men"adi nilai minimalnya dan "ika nilainya kurang dari
minimal "angkauan nilainya maka -ariable tersebut akan terisi oleh
bilangan maksimal tipe tersebut
4ilai yang diharapkan
727?7
727?:
727?<
4ilai pada -ariable C
727?7
$727?:
$727?7
)emrograman C
Eko Kurniawan Khannedy
Operator-Operator Perhitungan
/ntuk melakukan perhitungan$perhitungan data! maka diperlukan operator$
operator perhitungannya 6perator$operator yang paling umum dipakai dalam
pemrograman dengan bahasa C adalah &
Operator Contoh !rti
" 'La+b Mariable ' diisi dari isi -ariable a ditambah isi -ariable b
- 'La$b Mariable ' diisi dari isi -ariable a dikurangi isi -ariable b
8 'La=b Mariable ' diisi dari isi -ariable a dikali dengan isi -ariable
b
9 'La/b Mariable ' diisi dari isi -ariable a dibagi oleh isi -ariable b
"" a++ 3si -ariable a ditambah 1 )erintah ini sama dengan
aLa+1 atau a+L1
-- b$$ 3si -ariable a dikurang )erintah ini sama dengan aLa$1
atau a$L1
: 'La J b Mariable ' diisi dari sisa pembagian -ariable a dibagi
-ariable b
"; '+La Mariable ' ditambah dengan isi -ariable a #ama dengan
'L'+a
9; '/La Mariable ' dibagi dengan isi -ariable a #ama dengan
'L'/a
-; '$La Mariable ' dikurangi dengan isi -ariable a #ama dengan
'L'$a
8; '=La Mariable ' dikali dengan isi -ariable a #ama dengan
'L'=a
:; 'JLa Mariable ' diisi dari sisa pembagian ' dibagi isi -ariable a
#ama dengan 'L'Ja
Contoh program &
#include "stdio.#
#include "conio.#
main$%
&
int K=:69 +=G9 L.
clrscr$%.
'rint($EM = Cd dan , = Cd-nE9K9+%.
'rint($EM / , = Cd-nE9K/+%.
'rint($EM CC , = Cd-nE9 K C +%.
K1=:.
'rint($ENilai M se8arang : Ci-nE9K%.
K11.
'rint($ENilai M setela M11 : Ci-nE9K%.
'rint($ENilai , : Cd-nE9+11%.
'rint($ENilai , setelan+a : Cd-nE9+%.
L=11K.
'rint($ENilai N : Cd-nE9L%.
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
)rogram di atas akan menampilkan hasil seperti berikut &
M = :6 dan , = G
M / , = :
M C , = <
Nilai M se8arang : ::
Nilai M setela M11 : :;
Nilai , : G
Nilai , setelan+a : H
Nilai N : :<
Opr2 Istilah Keterangan
3++ )ost in'rement 4ilai 3 dikeluarkan dulu! kemudian 3 ditambah 1
++3 )re in'rement 4ilai 3 ditambah 1 dulu! kemudian nilainya dikeluarkan
3$$ )ost de'rement 4ilai 3 dikeluarkan dulu! kemudian 3 dikurangi 1
$$3 )re de'rement 4ilai 3 dikurangi 1 dulu! kemudian nilainya dikeluarkan
Operator-Operator Manipulasi Bit
/ntuk keperluan memanipulasi data dalam bentuk bit! .urbo C
menyediakan operator$operator berikut &
Operator Operasi
CC Neser bit ke kiri
DD Neser bit ke kanan
O 8an *%48+
P %tau *65+
K 165
Q 46. *Komplemen+
#eluruh operator manipulasi bit hanya dikenakan pada operand / -ariabel /
angka yang bertipe bilangan bulat *int! 'har! long+
)rioritas eksekusinya adalah
.ertinggi
.erendah
Q
CC DD
O
K
P
.abel Kebenaran dari tiap operator manipulasi bit adalah &
! B <! ! = B ! > B ! ? B
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
Contoh &
#include "stdio.#
#include "conio.#
main$%
&
unsigned int K9+9and9or9not9Kor.
K=FG.// <1
)emrograman C
Eko Kurniawan Khannedy
+=@:6.// :6G
and=K O +.
or=K P +.
Kor=K Q +.
not = R+.
clrscr$%.
'rint($EK : CAu : C<M-nE9K9K%.
'rint($E+ : CAu : C<M-nE9+9+%.
'rint($E---------------------------nE%.
'rint($EK O + : CAu : C<M-nE9and9and%.
'rint($EK P + : CAu : C<M-nE9or9or%.
'rint($EK Q + : CAu : C<M-nE9Kor9Kor%.
'rint($E R+ : CAu : C<M-nE9not9not%.
getc$%.
return 6.
7
;ika di$5un akan menghasilkan &
K : FG : <S
+ : @:6 : :6G
--------------------------
K O + : G : G
K P + : @H6 : :<S
K Q + : @G: : :<A
R+ : A@61@ : F2FF
)emrograman C
Eko Kurniawan Khannedy
)embuktian &
K : FG : <e : 66666666 61661116
+ : @:6 : :6G : 66666616 66661666
K O + : K : 66666666 61661116
+ : 66666616 66661666
----------------- O $and%
K O + : 66666666 66661666 = G

= G $terBu8ti%
K P + : K : 66666666 61661116
+ : 66666616 66661666
----------------- P $or%
K P + : 66666616 61661116 = :<e

= @H6 $terBu8ti%
K Q + : K : 66666666 61661116
+ : 66666616 66661666
----------------- Q $Kor%
K Q + : 66666616 61666116 = :<A

= @G: $terBu8ti%
R+ : + : 66666616 66661666
----------------- R $8om'lemen%
R+ : 11111161 11116111 = F2FF

= A@61@ $terBu8ti%
6perator$operator pergeseran bit! berguna untuk menggeserkan bit yang
ada dalam suatu -ariabel
Contoh &
#include "stdio.#
#include "conio.#
main$%
&
unsigned int ang8a9K9+.
ang8a=@6.
K=ang8a "" :.
+=ang8a ## :.
clrscr$%.
'rint($E?ng8a : C@u : CK-nE9ang8a9ang8a%.
'rint($EK=ang8a "" : : C@u : CK-nE9K9K%.
'rint($E+=ang8a ## : : C@u : CK-nE9+9+%.
getc$%.
return 6.
7
;ika di$5un akan menghasilkan &
?ng8a : @6 : ;:
K=ang8a "" : : :66 : cG
K=ang8a ## : : 1: : c
)embuktian &
?ng8a : @6 : 66666666 66116616
K=ang8a "" : : 66666666 11661666 = 1:G 1 A< 1 G = :66 : cG


K=ang8a ## : : 66666666 66661166 = G 1 < = 1: : c

)emrograman C
Eko Kurniawan Khannedy
Aturan-Aturan Perhitungan
)erhatikan perintah berikut &
(loat a.
a= H/@.
;ika anda mengharapkan bahwa nilai yang didapat adalah 1:! maka anda
akan ke'ewa! karena angka yang didapat adalah 1 Kenapa ini ter"adiR
%da aturan$aturan pengkon-ersian data yang berlaku dalam suatu operasi
perhitungan! diantaranya &
1 ;ika suatu bilangan bulat dioperasikan dengan bilangan bulat! maka
nilai yang didapat adalah bilangan bulat pula
2 6perasi perhitungan dilakukan berdasarkan tipe bilangan yang
terbesarnya ;adi "ika ada suatu perhitungan antara int dengan
long! maka komputer akan memperlakukan int sebagai long
/ntuk mengkon-ersi suatu -ariabel men"adi suatu -ariabel yang berbeda
tipe! maka bisa dilakukan dengan type 'ast Caranya adalah dengan menulis tipe
data yang diinginkan diapit dengan tanda kurung Contoh &
(loat a9B.
a=$(loat%H/@.
B=$(loat%$H/@%.
)ada perintah aL*,loat+ </5! maka angka < akan dikon-ersikan men"adi
,loat sehingga perintah tersebut akan menghasilkan nilai 1:! tetapi "ika perintah
bL*,loat+*</5+ diker"akan maka akan menghasilkan nilai 10 karena yang
diker"akan duluan adalah </5 yang menghasilkan nilai 1 yang kemudian
dikon-ersikan ke dalam bentuk ,loat
Kon-ersi tipe data "uga ter"adi dalam operasi penugasan / pengisian data
terhadap -ariabel )erhatikan perintah berikut &
#include "stdio.#
#include "conio.#
main$%
&
car c.
int i.
(loat (.
(=A@.H.
i=(.
c=i.
'rint($EF : C(-nE9(%.
'rint($E) : Cd-nE9i%.
'rint($EC : Cc-nE9c%.
getc$%.
return 6.
7
;ika dieksekusi! akan menghasilkan &
)emrograman C
Eko Kurniawan Khannedy
F : A@.H6666:
) : A@
C : ?
Keterangan &
$ (=A@.H. pengisian nilai ?5< ke -ariabel ,
$ i=(. pengisian nilai , ke -ariabel i 8alam baris ini ter"adi kon-ersi dari
,loat ke int )engkon-ersian ,loat ke int selalu menghilangan angka
pe'ahannya! dan tidak ter"adi pembulatan
$ c=i. pengisian nilai i ke -ariabel ' 8alam baris ini ter"adi kon-ersi dari
int ke 'har
Mendefinisikan Konstanta imbolis
/ntuk mende,inisikan suatu konstanta! perintah yang bisa dipakai adalah
perintah Sde,ine diikuti dengan nama konstanta dan isinya
Contoh &
#include "stdio.#
#include "conio.#
#de(ine P) ;.1<
#de(ine 'emBuat E?ndri Her+andiE
main$%
&
(loat radius=1698eliling9luas.
8eliling=:*P)*radius.
luas=P)*radius*radius.
'rint($EPeritungan Ling8aran-n2iBuat 4le : Cs-nE9'emBuat%.
'rint($E======================-nE%.
'rint($ETadius : CA.:(-nE9radius%.
'rint($EKeliling : CA.:(-nE98eliling%.
'rint($ELuas : CA.:(-nE9luas%.
getc$%.
return 6.
7
;ika dieksekusi! akan menghasilkan &
Peritungan Ling8aran
2iBuat 4le : ?ndri Her+andi
======================
Tadius : 16.66
Keliling : A:.G6
Luas : ;1<.66
Ketika program dieksekusi! maka 'ompiler akan mengganti semua )3
dengan nilai 71> dan pembuat dengan A%ndri FeryandiB ;adi ketika kita ingin
menggunakan nilai )3 yang lebih eEa't! maka pada de,ine )3! nilai 71> diganti
dengan 220/7
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB IV
INPUT DAN OUTPUT DATA
IF
Pemasukan !Input" Data
/mumnya suatu program mempunyai proses pemasukan data 8alam
program berbahasa C! pemasukan data dapat dilakukan dengan perintah s'an,
0ungsi s'an, merupakan ,ungsi yang dapat digunakan untuk memasukan
berbagai "enis data! tergantung dengan ,ormat penentunya
0ormat$,ormat penentu tipe data yang umum dipakai adalah &
Format Kegunaan
:' 8igunakan untuk pemasukan data bertipe 'har
:i atau :( 8igunakan untuk pemasukan data bertipe int! 'har
:u 8igunakan untuk pemasukan data berupa unsigned int atau
unsigned 'har
:* 8igunakan untuk pemasukan data berupa bilangan
pe'ahan *,loat+
:o 8igunakan untuk pemasukan data angka berbasis oktal
:x 8igunakan untuk pemasukan data angka berbasis
heEadesimal
:s 8igunakan untuk pemasukan data berupa string

Bentuk umum penggunaan ,ungsi s'an, adalah
scan($(ormat!9OnamaDariaBel%.
Contoh &
int i90am9menit9deti8.
unsigned int 0.
(loat (.
car namaIA6J.
scan($Ci!9Oi%.
scan($Cu!9O0%.
scan($C(!9O(%.
scan($Ci Ci Ci!9O0am9Omenit9Odeti8%.
scan($Cs!9nama%.
0ungsi s'an,*+ kurang begitu bagus "ika dipakai untuk pemba'aan string
Karena data yang tersimpan adalah hanya sampai menemukan spasi! maksudnya
"ika kita mengisikan 2 buah kata dengan pemisah spasi! maka data yang masuk
ke -ariabel tersebut hanyalah kata yang pertama
)emrograman C
Eko Kurniawan Khannedy
6leh karena itu! pemba'aan data bertipe string biasanya menggunakan
perintah gets*+ yang bentuk umumnya adalah &
gets$namaDariaBel%.
Contoh &
gets$nama%.
gets$alamat%.
/ntuk pemba'aan data bertipe 'har! selain dengan menggunakan s'an,*+
dengan ,ormat J'! bisa "uga dengan menggunakan ,ungsi get'h*+ atau get'he*+
)erbedaan dari get'h*+ dan get'he*+ adalah get'h*+ digunakan untuk memba'a
data bertipe 'har tanpa menampilkannya di layar! dan get'he*+ digunakan untuk
memba'a data bertipe 'har dengan menampilkan data karakternya di layar
Contoh &
#include "stdio.#
#include "conio.#
main$%
&
car a9B.
'rint($5asu8an Huru( 'ertama : %.
a=getc$%.
'rint($5asu8an Huru( 8edua : %.
B=getce$%.
'rint($2ata +ang dimasu8an adala Cc dan Cd-n!9a9B%.
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Pengeluaran !Output" Data
/ntuk output data! perintah yang bisa dipakai adalah print,*+ /ntuk
menampilkan data dengan ,ungsi print,*+! kita harus mengatur ,ormat
tampilannya! dengan ,ormat$,ormat penentu /ntuk lebih "elas perhatikan
program di bawah ini
#include "stdio.#
#include "conio.#
main$%
&
int a=:@666.
unsigned int B=@6666.
(loat c=1:;<@.AFG.
car namaI@6J=E3niDersitas Kom'uter )ndonesiaE.
car alamatI16J=E/andungE.
clrscr$%.
'rint($EPenam'ilan data tan'a di (ormat-nE%.
'rint($ENilai a : Cd-nE9a%.
'rint($ENilai B : Cu-nE9B%.
'rint($ENilai c : C(-nE9c%.
'rint($E*tring : Cs Cs-nE9nama9alamat%.//rata 8anan
'rint($EPenam'ilan data setela di (ormat-nE%.
'rint($ENilai a : CGd-nE9a%.
'rint($ENilai B : CGu-nE9B%.
'rint($ENilai c : C11.:(-nE9c%.
'rint($E*tring 1: C<6s C16s-nE9nama9alamat%.//rata 8anan
'rint($E*tring :: C-<6s C-16s-nE9nama9alamat%.//rata 8anan
getc$%.
return 6.
7
)rogram di atas akan menampilkan hasil eksekusi seperti di bawah ini &
Penam'ilan data tan'a di (ormat
Nilai a : :@666
Nilai B : @6666
Nilai c : 1:;<@.AFFF;<
*tring : 3niDersitas Kom'uter )ndonesia /andung
Penam'ilan data setela di (ormat
Nilai a : :@666
Nilai B : @6666
Nilai c : 1:;<@.AG
*tring 1: 3niDersitas Kom'uter )ndonesia /andung
*tring :: 3niDersitas Kom'uter )ndonesia /andung
)emrograman C
Eko Kurniawan Khannedy
Contoh Program
Contoh Kasus &
8i suatu perusahaan! data pengga"ian dihitung dengan ketentuan sebagai
berikut &
Na"i )okok & 5p 5000000
Na"i 9embur/"am & 5p 5000
.otal Na"i 9embur & 9ama 9embur = Na"i 9embur/"am
Na"i Kotor & Na"i )okok + .otal Na"i 9embur
)a"ak & 10J
Na"i Bersih & Na"i Kotor $ )a"ak
8ata yang diinputkan adalah & 4ama )egawai! 9ama 9embur
Program ke-1 +tanpa mem*ormat tampilan (ata,2
#include "stdio.#
#include "conio.#
main$%
&
int 0amlemBur.
long int ga0i'o8o8=@666669ga0i8otor9totalga0ilemBur.
(loat 'a0a89ga0iBersi.
car namaI@6J.
clrscr$%.
'rint($ENama PegaUai : E%.gets$nama%.
'rint($ELama LemBur : E%.scan($ECiE9O0amlemBur%.
totalga0ilemBur=$long int%@666*0amlemBur.
ga0i8otor=ga0i'o8o81totalga0ilemBur.
'a0a8=6.1*ga0i8otor.
ga0iBersi=ga0i8otor-'a0a8.
clrscr$%.
'rint($EHasil Peritungan-nE%.
'rint($ENama PegaUai : Cs-nE9nama%.
'rint($EVa0i Po8o8 : T'. Cli-nE9ga0i'o8o8%.
'rint($ELama LemBur : Ci 0am-nE90amlemBur%.
'rint($EWotal Va0i LemBur : T'. Cli-nE9totalga0ilemBur%.
'rint($EVa0i Kotor : T'. Cli-nE9ga0i8otor%.
'rint($EPa0a8 $16CC% : T'. C(-nE9'a0a8%.
'rint($EVa0i /ersi : T'. C(-nE9ga0iBersi%.
getc$%.
return 6.
7
)rogram di atas akan menghasilkan tampilan program seperti di bawah ini &
Hasil Peritungan
Nama PegaUai : *ell+ *e'tiani
Va0i Po8o8 : T'. @66666
Lama LemBur : @6 0am
Wotal Va0i LemBur : T'. :@6666
Va0i Kotor : T'. F@6666
Pa0a8 $16C% : T'. F@666.666666
Va0i /ersi : T'. AF@666.666666
Program Ke- +(engan mem*ormat tampilan (atan@a,2
)emrograman C
Eko Kurniawan Khannedy
#include "stdio.#
#include "conio.#
main$%
&
int 0amlemBur.
long int ga0i'o8o8=@666669ga0i8otor9totalga0ilemBur.
(loat 'a0a89ga0iBersi.
car namaI@6J.
clrscr$%.
'rint($ENama PegaUai : E%.gets$nama%.
'rint($ELama LemBur : E%.scan($ECiE9O0amlemBur%.
totalga0ilemBur=$long int%@666*0amlemBur.
ga0i8otor=ga0i'o8o81totalga0ilemBur.
'a0a8=6.1*ga0i8otor.
ga0iBersi=ga0i8otor-'a0a8.
clrscr$%.
'rint($EHasil Peritungan-nE%.
'rint($ENama PegaUai : Cs-nE9nama%.
'rint($EVa0i Po8o8 : T'. C16li-nE9ga0i'o8o8%.
'rint($ELama LemBur : Ci 0am-nE90amlemBur%.
'rint($EWotal Va0i LemBur : T'. C16li-nE9totalga0ilemBur%.
'rint($EVa0i Kotor : T'. C16li-nE9ga0i8otor%.
'rint($EPa0a8 $16CC% : T'. C16.6(-nE9'a0a8%.
'rint($EVa0i /ersi : T'. C16.6(-nE9ga0iBersi%.
getc$%.
return 6.
7
.ampilan data ketika program di atas di eksekusi
Hasil Peritungan
Nama PegaUai : *ell+ *e'tiani
Va0i Po8o8 : T'. @66666
Lama LemBur : @6 0am
Wotal Va0i LemBur : T'. :@6666
Va0i Kotor : T'. F@6666
Pa0a8 $16C% : T'. F@666
Va0i /ersi : T'. AF@666
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB X
STRING DAN MANIPULASINYA
IF
tring ?
#tring adalah sebuah array yang bertipe 'har yang diakhiri dengan karakter
null *20+
#ebagai 'ontoh! deklarasi dibawah ini merupakan deklasai sebuah array
yang bertipe 'har! dan bisa disamakan dengan deklarasi sebuah string dengan
nama st
car arra+XcIFJ = &YHZ9 YeZ9 YlZ9 YlZ9 YoZ9 Y[Z9 Y-6Z7.
8alam C! karakter null dapat digunakan untuk menandai akhir sebuah
string #etiap karakter akan membutuhkan 1 byte dalam memori
#ekumpulan karakter$karakter yang diapit dengan kutip ganda *TT+ disebut
sebagai konstanta string C akan se'ara otomatis menambahkan karakter null
pada setiap akhir konstanta string untuk menandakan akhir dari sebuah string
Mendeklarasikan tring
Cara pendeklarasian -ariabel$-ariabel yang ber"enis string dapat dilakukan
dengan 'ara sebagai berikut &
car namaI:1J.
car *nama:.
Kedua 'ara tersebut dapat dipergunakan Cara ke$1 adalah dengan
membuat suatu array 'har sebanyak 21 karakter )ada langkah ini! -ariabel
nama hanya diperbolehkan diisi sampai pan"angnya 20 karakter karena untuk
menutup suatu string membutuhkan satu byte untuk karater null
Cara ke$2 adalah dengan membuat suatu -ariabel ke suatu pointer 'har!
yang menun"uk ke suatu alamat di memori yang berisi data stringnya *isinya+
Cara pendeklarasian yang ke$1 *array+ lebih baik dari pada yang pointer!
karena kalau membuat string sebagai pointer maka ketika akan mengisikan data
maka harus meminta tempat dulu ke memori untuk menampung datanya
'ontohnya dengan mallo'! karena ketika kita tidak meminta alokasi memori dulu!
maka ada kemungkinan data string yang diisikan ke pointer akan mengisi ke
suatu tempat yang dimiliki oleh -ariabel lain
)emrograman C
Eko Kurniawan Khannedy
Inisialisasi tring
Cara untuk menginisialisasi string! dapat dilakukan dengan salah satu 'ara
di bawah ini &
car namaIJ=E)ni adala stringE.
car nama:IJ=&ZiZ9ZnZ9ZiZ9 Z Z9ZsZ9ZtZ9ZrZ9ZiZ9ZnZ9ZgZ9Z-6Z7.
car nama;I@J=E/32)E.
car nama<I@J=&Z/Z9ZuZ9ZdZ9ZiZ9Z-6Z7
car *nama@=E)ni 0uga stringE.
/ntuk mengisi suatu string 'aranya adalah &
strc'+$nama9E)ni stringE%.
nama@=E)ni 0uga stringE.
Coba diperhatikan! untuk string yang dideklarasikan sebagai sebuah array
karakter! pengisian nilainya adalah dengan menggunakan suatu perintah str'p@
yang berguna untuk mengisikan suatu string ke string lain )engisiannya tidak
boleh langsung .etapi "ika string dideklarasikan sebagai sebuah pointer karakter!
maka pengisiannya boleh diisikan se'ara langsung
#ungsi-#ungsi Manipulasi tring
gets (an puts
0ungsi gets digunakan untuk memba'a data berupa string dari keyboard
0ungsi puts digunakan untuk menampilkan suatu string ke layar *monitor+
Contoh program &
#include "stdio.#
int main$Doid%
&
car stringIG6J.
'rint($E5asu8an *eBua string:E%.gets$string%.
'uts$string%.
return 6.
7
Fasil run program &
5asu8an *eBua string:*tring adala se8um'ulan 8ara8ter
*tring adala se8um'ulan 8ara8ter
)emrograman C
Eko Kurniawan Khannedy
strlen
0ungsi strlen digunakan untuk mengetahui pan"ang suatu string
Contoh progam &
#include "stdio.#
#include "string.#
int main$Doid%
&
car stringIG6J.
int 'an0ang.
'rint($E5asu8an *tring: E%.gets$string%.
'an0ang=strlen$string%.
'rint($EPan0ang *tring adala Ci 8ara8ter-nE9'an0ang%.
return 6.
7
Fasil run program &
5asu8an *tring: ?/C2SFVH)\KL5N4P]T*W3^_M,N
Pan0ang *tring adala :A 8ara8ter
str'p@ (an strn'p@
0ungsi str'p@ ber,ungsi untuk menyalin isi suatu string ke string lain
0ungsi strn'p@ ber,ungsi untuk menyalin isi suatu string ke string lain
sebanyak n karakter
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car stringI;1J.
car *str1 = E)ni adala seBua stringE.
car str:I;1J.
strc'+$string9 str1%.
'rint($E)si *tring : Cs-nE9 string%.
strnc'+$str:9str1916%.
str:I16J=Z-6Z.// menutu' string
'rint($E)si *tr: : CsE9str:%.
getc$%.
return 6.
7
Fasil run program &
)si *tring : )ni adala seBua string
)si *tr: : )ni adala
)emrograman C
Eko Kurniawan Khannedy
str'mpA strn'mpA str'mpi (an strn'mpi
0ungsi str'mp digunakan untuk membandingkan 2 buah string se'ara 'ase
sensiti-e
0ungsi strn'mp digunakan untuk membandingkan 2 buah string sebanyak n
buah karakter se'ara 'ase sensiti-e
0ungsi str'mpi digunakan untuk membandingkan 2 buah string se'ara 'ase
insensiti-e
0ungsi strn'mpi digunakan untuk membandingkan 2 buah string sebanyak n
buah karakter se'ara 'ase insensiti-e
#emua ,ungsi tersebut akan menghasilkan sebuah nilai integer yang
mempunyai ketentuan &
4ilai return akan lebih dari 0 *D0+ ketika string1 lebih besar dari
string2
4ilai return akan sama dengan 0 *LL0+ ketika string1 sama dengan
string 2
4ilai return akan kurang dari 0 *C0+ ketika string1 lebih ke'il dari
string 2
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car str1I@J=E?/C2E9str:I@J=EaBcdE9str;I@J=E/C2SE9str<I@J=E/CdaE.
int asil.
asil=strcm'$str19str:%.
'rint($EHasil *WTC5P : -nE%.
i($asil==6% 'rint($E*tring1 sama dengan *tring:-nE%. else
i($asil#6% 'rint($E*tring1 leBi Besar dari *tring:-nE%. else
i($asil"6% 'rint($E*tring1 leBi 8ecil dari *tring:-nE%.
asil=strcm'i$str19str:%.
'rint($EHasil *WTC5P) : -nE%.
i($asil==6% 'rint($E*tring1 sama dengan *tring:-nE%. else
i($asil#6% 'rint($E*tring1 leBi Besar dari *tring:-nE%. else
i($asil"6% 'rint($E*tring1 leBi 8ecil dari *tring:-nE%.
asil=strncm'$str;9str<9;%.
'rint($EHasil *WTNC5P : -nE%.
i($asil==6% 'rint($E*tring; sama dengan *tring<-nE%. else
i($asil#6% 'rint($E*tring; leBi Besar dari *tring<-nE%. else
i($asil"6% 'rint($E*tring; leBi 8ecil dari *tring<-nE%.
asil=strncm'i$str;9str<9;%.
'rint($EHasil *WTNC5P) : -nE%.
i($asil==6% 'rint($E*tring; sama dengan *tring<-nE%. else
i($asil#6% 'rint($E*tring; leBi Besar dari *tring<-nE%. else
i($asil"6% 'rint($E*tring; leBi 8ecil dari *tring<-nE%.
getc$%.
return 6.
7
Fasil run program &
)emrograman C
Eko Kurniawan Khannedy
Hasil *WTC5P :
*tring1 leBi 8ecil dari *tring:
Hasil *WTC5P) :
*tring1 sama dengan *tring:
Hasil *WTNC5P :
*tring; leBi 8ecil dari *tring<
Hasil *WTNC5P) :
*tring; sama dengan *tring<
str'at (an strn'at
0ungsi str'at ber,ungsi untuk menggabungkan 2 buah string
0ungsi strn'at ber,ungsu untuk menggabungkan 2 buah string sebanyak n
karakter
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car str1IG6J.
car str:I1@J=E*a+a /ela0ar E.
car str;I16J=EWurBo CE.
clrscr$%.
strc'+$str19str:%.
strcat$str19str;%.
'rint($EHasil 'enggaBungan dengan *WTC?W : Cs-nE9str1%.
strc'+$str19str:%.
strncat$str19str;9@%.
'rint($EHasil 'enggaBungan dengan *WTNC?W : Cs-nE9str1%.
getc$%.
return 6.
7
Fasil 5un program &
Hasil 'enggaBungan dengan *WTC?W : *a+a /ela0ar WurBo C
Hasil 'enggaBungan dengan *WTNC?W : *a+a /ela0ar WurBo
)emrograman C
Eko Kurniawan Khannedy
strlwr (an strupr
0ungsi strlwr berguna untuk mengubah isi string men"adi huru, ke'il
0ungsi strupr berguna untuk mengubah isi string men"adi 'apital
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car str1IG6J=E*a+a /ela0ar WurBo CE.
clrscr$%.
'rint($ENormal : Cs-nE9str1%.
stru'r$str1%.
'rint($E3''erCase : Cs-nE9str1%.
strlUr$str1%.
'rint($ELoUerCase : Cs-nE9str1%.
getc$%.
return 6.
7
Fasil run program &
Normal : *a+a /ela0ar WurBo C
3''erCase : *?,? /SL?\?T W3T/4 C
LoUerCase : sa+a Bela0ar turBo c
strre$
0ungsi strre$ berguna untuk membalikan urutan string *re-erse+
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car str1IG6J=E*a+a /ela0ar WurBo CE.
clrscr$%.
'rint($ENormal : Cs-nE9str1%.
strreD$str1%.
'rint($ETeDerse : Cs-nE9str1%.
getc$%.
return 6.
7
Fasil run program &
Normal : *a+a /ela0ar WurBo C
TeDerse : C oBruW ra0ale/ a+a*
)emrograman C
Eko Kurniawan Khannedy
strset (an strnset
0ungsi strset berguna untuk mengganti isi suatu string dengan suatu karakter
tertentu
0ungsi strnset berguna untuk mengganti isi suatu string dengan suatu
karakter tertentu sebanyak n buah data
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car str1I:1J=E*a+a /ela0ar WurBo CE.
clrscr$%.
strnset$str19Z?Z91:%.
'rint($E*etela strnset 1: : Cs-nE9str1%.
strset$str19ZKZ%.
'rint($E*etela strset : Cs-nE9str1%.
getc$%.
return 6.
7
Fasil run program &
*etela strnset 1: : ???????????? WurBo C
*etela strset : KKKKKKKKKKKKKKKKKKKK
strstr
0ungsi strstr berguna untuk men'ari urutan pertama suatu string di string
lain
Contoh program &
#include "stdio.#
#include "conio.#
#include "string.#
main$%
&
car str1I:1J=E*a+a /ela0ar WurBo CE.
car str:IAJ=EWurBoE.
car *str;.
clrscr$%.
str; = strstr$str19 str:%.
'rint($E*tring ?sli: Cs-nE9str1%.
'rint($E*uB string : Cs-nE9 str;%.
'rint($EPosisi : Cd-nE9str;-str1%.
getc$%.
return 6.
7
Fasil run program &
*tring ?sli: *a+a /ela0ar WurBo C
*uB string : WurBo C
Posisi : 1;
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB V
PERCABANGAN
IF
tatement if - else
Bentuk dasar perintah i, U else adalah sebagai berikut &
i( $eK'ression%
*tatement1.
else
*tatement:.
*tatement/eri8utn+a.
;ika ketika dieksekusi ekspresi menghasilkan nilai true! maka statement1
akan dieksekusi dan statement tidak akan diker"akan dan kemudian program
akan mengeksekusi statement4erikutn@a! dan "ika ekspresi tersebut bernilai
,alse maka statement1 tidak akan dieksekusi dan statement akan dieksekusi!
dan dilan"utkan dengan mengeksekusi statement4erikutn@a
6perator$operator yang biasa digunakan dalam operasi logika! dapat dilihat
di tabel di bawah ini
Operator Contoh !rti
;; %LLB %pakah 3si Mariabel % sama dengan 3si Mariabel B
B; %VLB %pakah 3si Mariabel % .idak #ama 8engan 3si Mariabel B
C %DB %pakah 3si Mariabel % lebih besar dari 3si Mariabel B
D %CB %pakah 3si Mariabel % lebih ke'il dari 3si Mariabel B
C; %DLB %pakah 3si Mariabel % lebih besar atau sama dengan 3si
Mariabel B
D; %CLB %pakah 3si Mariabel % lebih ke'il atau sama dengan 3si
Mariabel B
== *%CL100+
OO*%DL:0+
%pakah % lebih ke'il atau sama dengan dari 100 dan %
lebih besar atau sama dengan :0
>> *%D100+PP
*%C0+
%pakah % lebih besar dari 100 atau % lebih ke'il dari 0
B V*%LLB+ %pakah % .idak #ama dengan B
/ntuk lebih "elas! perhatikan perintah berikut &
#include "stdio.#
#include "conio.#
main$%
&
int Nilai.
'rint($Nilai : %.scan($Ci!9ONilai%.
i($Nilai#=@6%
'rint($*elamat ?nda Lulus.!%.
else
'rint($5aa(. ?nda Wida8 Lulus.!%.
)emrograman C
Eko Kurniawan Khannedy
getc$%.
return 6.
7
)erintah di atas hanya mempunyai 2 kemungkinan yaitu keterangan
A#elamat %nda 9ulusB "ika nilai lebih besar dari atau sama dengan 50 dan
keterangan A(aa, %nda .idak 9ulusB! ketika nilai lebih ke'il dari 50
;ika perintah yang akan dieksekusi ketika kondisi ter'apai lebih dari 1
perintah! maka perintah$perintah tersebut harus diblok dengan tanda kurawal GH
)erhatikan program di bawah ini yang merupakan perubahan dari program
di atas
#include "stdio.#
#include "conio.#
main$%
&
int Nilai.
'rint($Nilai : %.scan($Ci!9ONilai%.
i($Nilai#=@6%
&
'rint($?nda HeBat[-n!%.
'rint($*elamat ?nda Lulus.!%.
7
else
&
'rint($5aa(. ?nda Wida8 Lulus.!%.
'rint($PerBai8i semester de'an +a[.!%.
7
getc$%.
return 6.
7
)erhatikan "uga program di bawah ini &
#include "stdio.#
#include "conio.#
main$%
&
int a9B.
'rint($5asu8an ? : %.scan($Ci!9Oa%.
'rint($5asu8an / : %.scan($Ci!9OB%.
i($a==B%
'rint($)si ^ariaBel ? *ama 2engan /!%.
else
i($a#B%
'rint($)si ^ariaBel ? leBi Besar dari /!%.
else
i($a"B%
'rint($)si ^ariaBel ? leBi 8ecil dari /!%.
getc$%.
return 6.
7
)rogram di atas akan meminta anda untuk memasukan nilai -ariabel % dan
B! kemudian program akan memeriksa apakah -ariabel % samadengan B! atau %
lebih besar dari B! dan % lebih ke'il dari B
)emrograman C
Eko Kurniawan Khannedy
Contoh Kasus E
8i sebuah uni-ersitas penilaian yang dipakai adalah &
4ilai%khirL20J=tugas+70J=uts+50J=uas
Nilai !khir In(ex
DL:0 %
DL?: B
DL5? C
DL>5 8
DL0 E
8iluar nilai di atas! maka indeE adalah 1 *indeE tidak diketahui+
8ata yang diinputkan adalah & tugas! uts! uas
#include "stdio.#
#include "conio.#
main$%
&
int tugas9uts9uas.
(loat nilaia8ir.
car indeK.
'rint($ENilai Wugas : E%.scan($ECiE9Otugas%.
'rint($ENilai 3W* : E%.scan($ECiE9Outs%.
'rint($ENilai 3?* : E%.scan($ECiE9Ouas%.
nilaia8ir=6.:*tugas16.;*uts16.@*uas.
'rint($ENilai ?8ir : C(-nE9nilaia8ir%.
i($nilaia8ir#=G6%
indeK=Z?Z.
else
i($nilaia8ir#=AG%
indeK=Z/Z.
else
i($nilaia8ir#=@A%
indeK=ZCZ.
else
i($nilaia8ir#=<@%
indeK=Z2Z.
else
i($nilaia8ir#=6%
indeK=ZSZ.
else
indeK=ZMZ.
'rint($E)ndeK : Cc-nE9indeK%.
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Perintah switch case - default
#elain i,$else! perintah yang digunakan untuk per'abangan adalah swit'h U
'ase Bentuk dasar dari perintah tersebut adalah &
sUitc$e8s'resi%
&
case 8ondisi1:'erinta1.Brea8.
case 8ondisi::'erinta::Brea8.
de(ault : 'erinta;.
7
Cara ker"a perintah di atas adalah & A;ika ekspresi sama dengan kondisi1!
maka perintah1 akan dieksekusi dan kemudian keluar dari swit'h! dan "ika
ekspresi sama dengan kondisi2 maka perintah 2 yang akan dieksekusi dan
kemudian keluar dari swit'h! dan "ika tidak 1 kondisi pun yang sama dengan
ekspresi maka perintah7 *perintah de,ault+ yang akan dieksekusi )erintah de,ault
kalau tidak diperlukan bisa dihilangkan
/ntuk lebih "elas! perhatikan perintah di bawah ini
sUitc $indeK%
&
case Z?Z:'rint($EKeterangan : /agus *e8ali-nE%.Brea8.
case Z/Z:'rint($EKeterangan : /agus-nE%.Brea8.
case ZCZ:'rint($EKeterangan : Cu8u'-nE%.Brea8.
case Z2Z:'rint($EKeterangan : Kurang-nE%.Brea8.
case ZSZ:'rint($EKeterangan : Kurang *e8ali-nE%.Brea8.
de(ault :'rint($EKeterangan : )ndeK Wa8 2i8etaui-nE%.
7
Keterangan program di atas adalah "ika indeELW%W maka keterangan Bagus
#ekali! "ika indeELWBW maka keterangan Bagus! "ika indeELWCW maka keterangan
Cukup! "ika indeELW8W maka keterangan Kurang! "ika indeELWEW maka keterangan
Kurang #ekali! dan "ika indeE bukan % U E! maka keterangan adalah 3ndeE .idak
8iketahui
)emrograman C
Eko Kurniawan Khannedy
Perintah if else dengan ban$ak kondisi
;ika kondisi yang harus diperiksa lebih dari 1 kondisi! maka hanya i,$else lah
yang bisa dipakai 6perator$operator logika yang dipakai adalah operator OO
*and+! dan operator PP *or+
/ntuk lebih "elas! perhatikan perintah di bawah ini&
i($$indeK==Z?Z%PP$indeK==Z/Z%PP$indeK==ZCZ%%
'rint($E*elamat ?nda LulusE%.
else
i($$indeK==Z2Z%PP$indeK==ZSZ%%
'rint($E?nda Wida8 Lulus. LeBi giat lagi Bela0ar[E%.
)erintah di atas akan menampilkan string A#elamat %nda 9ulusB ketika
indeE berisi %! B atau C! dan akan menampilkan keterangan A%nda .idak 9ulus
9ebih giat lagi bela"arVB ketika indeE berisi 8 atau E
/ntuk lebih "elas! buatlah program untuk mengatasi kasus di bawah ini
8i sebuah perusahaan bus! tabel harga dapat dilihat dalam tabel di bawah
ini
KE9%#
EK#EK/.30*1+ B3#43#*2+ EK646(3*7+
.
/
;
/
%
4
;%K%5.%*1+ 70000 >0000 10000
X6NX%*2+ :0000 50000 FFFF
#/5%B%X%*7+ %FFFF ?0000 70000
Karena sekarang masa promosi! maka khusus untuk surabaya$eksekuti, dan
yogya$ekonomi mendapatkan diskon sebesar 10J
Buatlah program dengan data yang dimasukan adalah "enis kelas! tu"uan
dan banyak tiket yang dibeli 8ata yang ingin ditampilkan adalah harga tiket dan
total tiket! diskon dan besar pembayaran
Contoh &
Pili \urusan :
1. \a8arta
:. ,og+a
;. *uraBa+a
\urusan +ang anda 'ili : : Iin'utJ
Pili Kelas :
1. S8se8uti(
:. /isnis
;. S8onomi
Kelas +ang anda 'ili : ; Iin'utJ
/an+a8 Wi8et : @ Iin'utJ
Harga Wi8et : T'. :6666 Iout'utJ
Wotal Wi8et : T'. 166666 Iout'utJ
2is8on : T'. 16666 Iout'utJ
/a+ar : T'. H6666 Iout'utJ
)rogram untuk kasus di atas &
#include "stdio.#
#include "conio.#
)emrograman C
Eko Kurniawan Khannedy
main$%
&
int 8ode0urusan98ode8elas9Ban+a8ti8et.
long int argati8et9total.
(loat dis8on9Ba+ar.
'rint($EPili \urusan :-nE%.
'rint($E----------------nE%.
'rint($E1. \a8arta-n:. ,og+a-n;. *uraBa+a-nE%.
'rint($E----------------nE%.
'rint($E\urusan +ang di'ili : E%.scan($ECiE9O8ode0urusan%.
'rint($EPili Kelas :-nE%.
'rint($E----------------nE%.
'rint($E1. S8se8uti(-n:. /isnis-n;. S8onomi-nE%.
'rint($E----------------nE%.
'rint($EKelas +ang di'ili : E%.scan($ECiE9O8ode8elas%.
'rint($E/an+a8 Wi8et : E%.scan($ECiE9OBan+a8ti8et%.
i($$8ode0urusan==1%OO$8ode8elas==1%%
argati8et=F6666.
else
i($$8ode0urusan==1%OO$8ode8elas==:%%
argati8et=<6666.
else
i($$8ode0urusan==1%OO$8ode8elas==;%%
argati8et=16666.
else
i($8ode0urusan==:%
&
i($8ode8elas==1% argati8et=G6666. else
i($8ode8elas==:% argati8et=@6666. else
i($8ode8elas==;% argati8et=:6666.
7
else
i($8ode0urusan==;%
&
sUitc $8ode8elas%
&
case 1:argati8et=H6666.Brea8.
case ::argati8et=A6666.Brea8.
case ;:argati8et=;6666.
7
7
'rint($EHarga Wi8et : T'. Cli-nE9argati8et%.
total=Ban+a8ti8et*argati8et.
'rint($EWotal Wi8et : T'. Cli-nE9total%.
i($ $$8ode0urusan==;%OO$8ode8elas==1%% PP
$$8ode0urusan==:%OO$8ode8elas==:%%
%
dis8on=6.1*total.
else
dis8on=6.
'rint($E2is8on 16CC : T'. C(-nE9dis8on%.
Ba+ar=total-dis8on.
'rint($E/a+ar : T'. C(-nE9Ba+ar%.
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB VI
PERULANGAN (LOOP)
IF
Pendahuluan
/ntuk memahami mengenai ,ungsi perulangan! 'oba lihatlah kasus sebagai
berikut &
Buatlah suatu program untuk menampilkan angka dari 1 sampai dengan 5
(aka untuk kasus tersebut program yang buat adalah sebagai berikut &
#include "stdio.#
#include "conio.#
main$%
&
'rint($1-n!%.
'rint($:-n!%.
'rint($;-n!%.
'rint($<-n!%.
'rint($@-n!%.
getc$%.
return 6.
7
)rogram di atas telah memenuhi yang diinginkan! tetapi "ika bilangan yang
akan ditampilkan misalkan dari 1 sampai 1000! maka sangatlah merepotkan "ika
harus menulis angka 1 sampai dengan 1000 se'ara manual 6leh karena itu! di
semua bahasa pemrograman terdapat suatu mekanisme yang bernama loop
*perulangan+
%da beberapa "enis perulangan yang dapat dilakukan oleh bahasa
pemrograman C! yaitu &
0or
Yhile
8o Yhile
9abel
)emrograman C
Eko Kurniawan Khannedy
Perulangan Dengan Perintah for
)erulangan ,or mempunyai bentuk umum seperti berikut &
(or$inisialisasi counter. 8ondisi 'erulangan. statement%
&
statement.
7
Contoh berikut akan menampilkan angka 1 sampai 100! kemudian
menampilkan angka 10 turun sampai 0 dengan perubahan nilainya adalah
setengah *05+
#include "stdio.#
#include "conio.#
main$%
&
int i.
int (.
(or $i=1.i"=1666.i11%
'rint($Ci-n!9i%.
(or $(=16.(#=6.(-=6.@%
'rint($CA.:(-n!9(%.
getc$%.
return 6.
7
8alam perulangan yang menggunakan ,or! perulangan dilakukan hanya
"ika kondisi perulangannya mempunyai nilai true *tidak 0+
)emrograman C
Eko Kurniawan Khannedy
Perulangan Dengan Perintah while
Bentuk umum dari while adalah seperti berikut &
Uile $8ondisi%
&
'erinta.
'erinta.
7
Cara ker"a dari perulangan while mirip dengan perulangan ,or .etapi dalam
perulangan while ini! tidak ada "aminan bahwa program akan masuk ke dalam
perulangan 3ni dikarenakan pemeriksaan kondisinya dilakukan di awal
perulangan
#include "stdio.#
#include "conio.#
main$%
&
int i.
(loat (.
i=1.
Uile $i"=1666%
&
'rint($Ci-n!9i%.
i11.
7
(=16.
Uile $(#=6%
&
'rint($CA.:(-n!9(%.
(=(-6.@.
7
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Perulangan Dengan Perintah do while
Bentuk umum dari do while adalah seperti berikut &
do
&
'erinta.
'erinta.
7 Uile $8ondisi%.
Cara ker"a dari perulangan do while mirip dengan perulangan while .etapi
dalam perulangan do while ini! penge'ekan kondisi dilakukan di akhir loop
#ehingga program pasti dapat masuk ke perulangan ini minimal 1 kali
#include "stdio.#
#include "conio.#
main$%
&
int i.
(loat (.
i=1.
do
&
'rint($Ci-n!9i%.
i11.
7 Uile $i"=1666%.
(=16.
do
&
'rint($CA.:(-n!9(%.
(=(-6.@.
7 Uile $(#=6%.
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Perulangan Dengan Menggunakan label
)erulangan dengan menggunakan teknik label! merupakan teknik
perulangan yang paling awal dikenal! biasanya ada dalam pemrograman
berbahasa assembly .etapi perulangan seperti ini ti(ak (ianGurkan untuk
(ipakai karena bisa membuat struktur program men"adi a'ak$a'akan
/ntuk lebih "elas! perhatikan 'ontoh program di bawah ini
#include "stdio.#
#include "conio.#
main$%
&
int i.
i=6.
aUal:
i=i11.
'rint($ECi-nE9i%.
i($i"16%
goto aUal.
else
goto a8ir.
'rint($EPerinta ini ta8 a8an die8se8usi-nE%.
'rint($EPerinta ini 0uga ta8 a8an die8se8usi-nE%.
a8ir:
getc$%.
return 6.
7
)rogram di atas akan menampilkan angka 1 sampai 10 )erhatikan perintah
di bawah ini &
'rint($EPerinta ini ta8 a8an die8se8usi-nE%.
'rint($EPerinta ini 0uga ta8 a8an die8se8usi-nE%.
)erintah tersebut tidak akan pernah dieksekusi! karena ketika program
telah men'apai nilai 10 maka akan melewatkan perintah tersebut dan langsung
lon'at *goto+ ke bagian akhir yang ditandai dengan perintah akhirE
-ugas E
1 Buat program untuk menampilkan angka dari nilai awal k dengan keliapatan m
dan "umlah angka sebanyak n Contoh masukan dan keluaran&
k ; 1F
m ; 6
n ; 7
1F 16 1H 1%
2 Buat program untuk menampilkan deret ,ibonan'i yang sesuai dengan
banyaknya angka yang ingin ditampilkan Kemudian lakukan -alidasi untuk
)emrograman C
Eko Kurniawan Khannedy
angka yang dimasukkan %ngka yang dimasukan harus antara 2 sampai 10
Bila angka yang dimasukan adalah 0! maka program selesai
Contoh masukan dan keluaran &
Deret Fi4onan'i
Masukan 4an@akn@a angka @ang (iinginkan I221FJ E K
Deret Fi4onan'i E 1A 1A A 6A LA KA 16A 1
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB VII
FUNGSI (FUNCTION)
IF
Pendahuluan
0ungsi merupakan blok dari kode program yang diran'ang untuk
melaksanakan tugas khusus 0ungsi banyak dilibatkan dalam pembuatan suatu
program! dengan tu"uan &
)rogram men"adi lebih tersetuktur! sehingga mudah dipahami dan mudah
dikembangkan
8apat mengurangi pengulangan kode
Bentuk umum suatu ,ungsi adalah sebagai berikut &
Wi'edata nama(ungsi$da(tar'arameter%
&
/*/adan Fungsi*/
return nilaireturn. /* untu8 ti'e data Bu8an Doid */
7
#ungsi Bertipe void
0ungsi bertipe -oid! kalau dalam program pas'al atau delphi disebut sebagai
pro'edure 0ungsi ini tidak mempunyai nilai kembalian! "adi ,ungsi bertipe ini
hanya merupakan sekumpulan kode program yang beker"a sesuai dengan
parameter yang diberikan
Contoh ,ungsi bertipe -oid &
Doid Wam'ilNama$%
&
teKtcolor$TS2%.
c'rint($Nama *a+a : Wulis Nama ?da-n-r!%.
c'rint($?lamat : \l. Can 2i ?s'al No. F6-n-r!%.
c'rint($Wele'on : 6::-:@1;F6H-n-r!%.
7
main$%
&
Wam'ilNama$%.
Wam'ilNama$%.
Wam'ilNama$%.
7
8alam program di atas! ada sebuah ,ungsi yang bernama .ampil4ama*+!
yang berguna untuk menampilkan data 4ama! %lamat! dan .elepon 8alam
program utama *,ungsi main*+ +! 'ara pemanggilan ,ungsi tersebut adalah
dengan menulis nama ,ungsinya *dalam hal ini .ampil4ama*+ + ;adi program di
atas akan menampilkan isi ,ungsi .ampil4ama*+ sebanyak 7 kali
)emrograman C
Eko Kurniawan Khannedy
0ungsi di atas merupakan ,ungsi yang dipanggil tanpa memakai parameter
/ntuk melihat 'ontoh ,ungsi berparameter! perhatikan program di bawah ini
Doid Kota8$int M19int ,19 int M:9int ,:9int /ing8ai9int Latar%
&
int i.
teKtcolor$/ing8ai%.
teKtBac8ground$Latar%.
gotoK+$M19,1%.c'rint($!%. /* alt1:1G */
gotoK+$M19,:%.c'rint($Cc!91H:%.
gotoK+$M:9,1%.c'rint($Cc!91H1%.
gotoK+$M:9,:%.c'rint($Cc!9:1F%.
(or $i=M111.i"=M:-1.i11%
&
gotoK+$i9,1%.c'rint($Cc!91HA%.
gotoK+$i9,:%.c'rint($Cc!91HA%.
7
(or$i=,111.i"=,:-1.i11%
&
gotoK+$M19i%.c'rint($Cc!91FH%.
gotoK+$M:9i%.c'rint($Cc!91FH%.
7
7
main$%
&
Kota8$1919G69:<9_H)WS9/L3S%.// 5emanggil Procedur Kota8
Kota8$:9:91@9:;9_H)WS9TS2%.
getc$%.
return 6.
7
Moid Kotak merupakan sebuah ,ungsi yang akan membuat suatu kotak di
layar sesuai dengan koordinat yang diberikan di bagian parameter Koordinat
tersebut adalah koordinat kiri atas *11!X1+! dan koordinat titik kanan bawah
*12!X2+ #elain itu ,ungsi ini membutuhkan parameter Bingkai yang berguna
untuk menentukan warna bingkai kotak! dan "uga parameter 9atar yang berguna
untuk menentukan warna latar belakang kotak yang dibuat
)emanggilan Kotak*1!1!:0!2>!YF3.E!B9/E+ berguna untuk membuat kotak
dengan posisi kiri atas pada koordinat *1!1+ dan posisi kanan bawah pada
koordinat *:0!2>+ dengan warna bingkai kotak berwarna putih dengan latar
belakang kotak berwarna biru
)emrograman C
Eko Kurniawan Khannedy
#ungsi bertipe data
8alam dunia matematika! kita mengenal ,ungsi Contoh & 0*1+L1
2
+71+5!
yang berarti kita mempunyai sebuah ,ungsi bernama 0 yang membutuhkan
parameter 1 sebagai data yang akan dihitung dengan persamaan 1
2
+71+5
sehingga kalau kita menulis 0*5+! maka nilai dari ,ungsi tersebut adalah 5
2
+
75+ 5 L >5
Bentuk umum dari 0un'tion ini dalam bahasa )as'al adalah &
t+'edata NamaFungsi$da(tar 'arameter%
&
Perinta.
Perinta.
Teturn NilaiHasil3ntu8Fungsi.
7
Contoh 1 & 0ungsi matematik untuk menghitung persamaan 0*1+ L
1
2
+71+5I
(loat F$(loat M%
&
return M*M1;*M1@.//Fungsi diisi asil dari 'eritungan M
:
1;*M1@
7
Contoh 2 & 0ungsi untuk men'ari 0aktorial dari suatu nilai
(loat Fa8torial$int N%
&
int ).
(loat Hasil.
Hasil:=1.
(or$)=:.)"=N.)11%
Hasil=Hasil * ).
return Hasil.
7
Contoh 7& 0ungsi untuk men'ari Kombinasi dengan rumus &
Kombinasi *1!X+ L
)! ( !
!
X Y X
Y


Float KomBinasi$int M9 int ,%
&
return Fa8torial$,% / $Fa8torial$M%*Fa8torial$,-M%%.
7
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB VIII
ARRAY (LARIK)
IF
Apakah Arra$?
Contoh Kasus & #uatu uni-ersitas ingin mendata nilai mahasiswa di sutau
kelas dengan banyak mahasiswa 10 orang 8ari semua nilai yang telah
dimasukan tersebut ingin ditampilkan kembali dan di'ari nilai rata$ratanya
/ntuk membuat program dengan ketentuan seperti diatas! ada beberapa
'ara untuk meme'ahkannya &
Program 1 E -anpa menggunakan arra@
#include "stdio.#
#include "conio.#
Doid main$%
&
int n19n:9n;9n<9n@9nA9nF9nG9nH9n16.
(loat total9 ratarata.
// PemBacaan semua nilai dari 8e+Board
'rint($Pemasu8an data nilai maasisUa : -n!%.
'rint($Nilai maasisUa Ke-1 : %.scan($Cd!9On1%.
'rint($Nilai maasisUa Ke-: : %.scan($Cd!9On:%.
/* diulang dari nilai 8e-; sam'ai tera8ir */
'rint($Nilai maasisUa Ke-16: %.scan($Cd!9On16.
// 'eritungan total dan rata-rata
total=n11n:1n;1n<1n@1nA1nF1nG1nH1n16.
ratarata=total/16.
// 5enam'il8an data nilai +ang tela dimasu8an
'rint($Nilai maasisUa Ke-1 : C;d-n!9n1%.
'rint($Nilai maasisUa Ke-:: C;d-n!9n:%.
/* diulang dari nilai 8e-; sam'ai tera8ir */
'rint($Nilai maasisUa Ke-16 : C;d-n!9n16%.
// 5enam'il8an nilai rata-rata
'rint($Tata-rata 8elas : CA.:(-n!9ratarata%.
getc$%.
7
8engan menggunakan 'ara diatas! sebenarnya programnya telah
men'ukupi! tetapi kalau nilai yang akan diolah men"adi lebih banyak! maka
pendeklarasian -ariabel n harus dilakukan sebanyak yang diperlukan ;adi kalau
data yang akan diolah sebanyak 100 buah! maka pendeklarasian dan pemba'aan
datanya pun dilakukan sebanyak 100 kali 8an perhitungannya "uga 5umus
perhitungan total pun men"adi berubah )emrograman di atas sebenarnya
sederhana tetapi bisa sangat merepotkan 6leh karena
)emrograman C
Eko Kurniawan Khannedy
Arra$ % dimensi
#olusi kedua dari kasus diatas adalah dengan menggunakan array %rray
adalah suatu -ariabel yang dapat menampung lebih dari satu data dengan tipe
data yang sama dan dibedakan berdasarkan nomor indeEnya 8alam bahasa C!
array selalu dimulai dari indeE ke$0 *nol+
Contoh deklarasi array &
int NI16J.
8eklarasi diatas berarti pendeklarasian -ariabel array bernama 4 yang
mempunyai elemen sebanyak 10 buah dengan indeE dimulai dengan nomor 0
sampai < 8alam memori deklarasi tersebut dapat digambarkan seperti berikut &
4Z0[ 4Z1[ 4Z2[ 4Z7[ 4Z>[ 45[ 4Z?[ 4Z7[ 4Z:[ 4Z<[
/ntuk memasukan suaut elemen data dalam array! perintah yang dilakukan
ditulis seperti pemba'aan data -ariabel biasa hanya perbedaannya harus ditulis
untuk indeE ke berapa
Contoh untuk pengisian data ke elemen array &

scan($Cd!9 ONI:J%.
)erintah diatas berarti pemba'aan data dari keyboard untuk data bertipe
integer *Jd+ dan dimasukan ke -ariabel array indeE ke$2 *urutan ke$7+
Contoh$'ontoh lain pengisian ke suatu elemen array &
)=@. // DariaBel ) diisi dengan nilai @
NI)J = F. // data 8e-) dari DariaBel N diisi dengan nilai F
scan($Cd!9ONINI)JJ%.
// 'emBacaan data untu8 DariaBel N 'ada indeK 8e-NI)J $F%
Karena nomor elmeen dari array bisa diisi dengan -ariabel! berarti kita bisa
melakukan perulangan *loop+ untuk melakukan pemba'aan data dari elemen
pertama sampai elemen terakhir
/ntuk lebih "elas! lihat program pada halaman berikutnya
#include "stdio.#
#include "conio.#
)emrograman C
Eko Kurniawan Khannedy
Doid main$%
&
int NilaiI16J.
int indeK.
(loat total9ratarata.
// PemBacaan data dari 8e+Board
'rint($PemBacaan data nilai -n!%.
(or $indeK=6.indeK"16.indeK11%
&
'rint($Nilai maasisUa 8e-Cd = 9indeK11%.
scan($Cd!9ONilaiIindeKJ%.
7

// Peritungan total dan rata-rata
total=6.
(or $indeK=6.indeK"16.indeK11%
total=total1NilaiIindeKJ.// atau total1=NilaiIindeKJ.
ratarata=total/16.
// 5enam'il8an data +ang tela dimasu8an dan rata-rata.
(or $indeK=6.indeK"16.indeK11%
'rint($Nilai maasisUa 8e-Cd = C;d-n9indeK119NilaiIindeKJ%.
'rint($Tata-rata = CA.:(-n!9ratarata%.
getc$%.

7
)emrograman C
Eko Kurniawan Khannedy
Arra$ & Dimensi
%rray 2 dimensi biasanya digunakan untuk menyimpan data dalam bentuk
matrik 3ndeE %rray 2 dimensi terdiri dari indeE baris dan kolom
)endeklarasian array 2 dimensi adalah &
Wi'edata namaarra+IBJI8J.
8imana & b adalahbanyak baris dan k adalah banyak kolom
Contoh
int matri8I@JI@J.
)erintah di atas akan membuat sebuah array 2 dimensi yang kalau
digambarkan adalah sebagai berikut &
indeE 0 1 2 7 >
0 0!0 0!1 0!2 0!7 0!>
1 1!0 1!1 1!2 1!7 1!>
2 2!0 2!1 2!2 2!7 2!>
7 7!0 7!1 7!2 7!7 7!>
> >!0 >!1 >!2 >!7 7!7
Cara pengaksesan elemen array 2 dimensi dapat dilihat pada 'ontoh di
bawah ini &
matI6JI6J=F.
'rint($5asu8an data : %.scan($Cd!9OmatI:JI1J%.
'rint($2ata +ang dimasu8an : Cd-n!9matI:JI1J%.
Keterangan &
- Baris pertama adalah mengisikan nilai 7 ke array mat pada baris 0
kolom 0
- Baris kedua adalah perintah untuk memba'a data elemen matrik pada
baris 2 kolom ke 1
- Baris ketiga adalah perintah untuk menampilkan data elemen
matrik/array pada baris 2 dan kolom ke$1
)emrograman C
Eko Kurniawan Khannedy
Pembacaan elemen-elemen array 2 dimensi melibatkan 2 perulangan. 1 perulangan
baris dan 1 perulangan kolom. Untuk lebih jelas perhatikan program di bawah ini.
Contoh )rogram %rray 2 8imensi &
#include "stdio.#
#include "conio.#
#de(ine ma8s ;
main$%
&
int matIma8sJIma8sJ.
int B98.
'rint($EPengisian ?rra+ : -nE%.
(or $B=6.B"ma8s.B11%
&
(or $8=6.8"ma8s.811%
&
'rint($E5atri8 ICd9CdJ : E9B98%.
scan($ECdE9OmatIBJI8J%.
7
7
'rint($E5atri8 +ang tela dimasu8an :-nE%
(or $B=6.B"ma8s.B11%
&
(or $8=6.8"ma8s.811%
&
'rint($ECAdE9matIBJI8J%.
7
'rint($E-nE%.
7
getc$%.
return 6.
7
Contoh )rogram 6perasi pertambahan 2 matrik
#include "stdio.#
#include "conio.#
#de(ine ma8s ;
main$%
&
int mat1Ima8sJIma8sJ9 mat:Ima8sJIma8sJ9 matasilIma8sJIma8sJ.
int B98.
'rint($EPengisian 5atri8 1 : -nE%.
(or $B=6.B"ma8s.B11%
&
(or $8=6.8"ma8s.811%
&
'rint($E5atri8 ICd9CdJ : E9B98%.
scan($ECdE9Omat1IBJI8J%.
7
7

'rint($EPengisian 5atri8 : : -nE%.
(or $B=6.B"ma8s.B11%
&
)emrograman C
Eko Kurniawan Khannedy
(or $8=6.8"ma8s.811%
&
'rint($E5atri8 ICd9CdJ : E9B98%.
scan($ECdE9Omat:IBJI8J%.
7
7
// aUal o'erasi 'ertamBaan matri8

(or $B=6.B"ma8s.B11%
(or $8=6.8"ma8s.811%
matasilIBJI8J=mat1IBJI8J1mat:IBJI8J.

// a8ir o'erasi 'eritungan
'rint($E5atri8 1 :-nE%
(or $B=6.B"ma8s.B11%
&
(or $8=6.8"ma8s.811%
&
'rint($ECAdE9mat1IBJI8J%.
7
'rint($E-nE%.
7
'rint($E5atri8 : :-nE%
(or $B=6.B"ma8s.B11%
&
(or $8=6.8"ma8s.811%
&
'rint($ECAdE9mat:IBJI8J%.
7
'rint($E-nE%.
7
'rint($E5atri8 Hasil :-nE%
(or $B=6.B"ma8s.B11%
&
(or $8=6.8"ma8s.811%
&
'rint($ECAdE9matasilIBJI8J%.
7
'rint($E-nE%.
7
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Kasus !rra@ Dimensi
1 Buatlah suatu program untuk menghitung "umlah anggota yang ada
dalam suatu matrik
Contoh &
2
7
>
5
?
2
1
7
>
.otal Elemen matrik adalah 70
Catatan & %nggota elemen dimasukan dari keyboard
2 Buatlah suatu program untuk menampilkan total elemen per baris dan per
kolom
Contoh &
3nput &
2
7
>
5
?
2
1
7
>
6utput &
)emrograman C
Eko Kurniawan Khannedy
2
7
>
<
5
?
2
17
1
7
>
:
:
12
10
7 Buatlah suatu program untuk menge'ek apakah suatu matrik simetris atau
tidak
Contoh 1 &
3nput &
2
7
>
5
?
2
1
7
>
(atrik tidak simetris
Contoh 2 &
3nput &
)emrograman C
Eko Kurniawan Khannedy
2
5
?
5
1
2
?
2
>
(atrik simetris
Catatan & #uatu matrik akan disebut simetris "ika (i" L ("i! "adi satu elemen
sa"a tidak terpenuhi berarti matrik tersebut tidak simetris
> Buatlah program untuk melakukan perhitungan perkalian matrik (atrik
pertama dan (atrik kedua dimasukan dari keyboard! kemudian lakukan
operasi perkalian dan kemudian tampilkan hasilnya
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB X
STRUCT (RECORD)
IF
Apakah tru't ?
.urbo C tidak selalu menyediakan tipe data yang sesuai dengan tipe data
yang diinginkan Contoh kasus yaitu ketika kita ingin membuat suatu program
mengolah data mahasiswa dimana data mahasiswa terdiri dari 43(! 4ama!
4ilai/.#! 4ilai/%#! 4ilai\ui]! 4ilai%khir dan 3ndeE )restasinya .urbo C tidak
menyediakan tipe data untuk data tersebut 6leh karena itu maka kita harus
membuat suatu tipe data baru yang 'o'ok dengan keperluan kita Caranya adalah
dengan menggunakan perintah stru't
8eklarasi tipe data baru *stru't+ untuk data mahasiswa dapat dilihat
sebagai berikut &
struct W5s
&
car N)5I11J.
car NamaI:1J.
int Nilai3W*9Nilai3?*9Nilai]uiL.
(loat Nilai?8ir.
car indeK.
7.
8eklarasi diatas berarti kita telah membuat suatu tipe data yang bernama
.(hs dimana setiap data bertipe .(hs mempunyai ,ield 43(! 4ama! 4ilai/.#!
4ilai/%#! 4ilai\ui]! 4ilai%khir dan indeE
/ntuk mendeklarasikan sebuah -ariable yang bertipe .(hs 'aranya adalah
seperti berikut &
W5s 5s195s:.
8eklarasi tersebut berarti bahwa kita membuat suatu -ariable bernama
(hs1 dan (hs2 dimana tiap -ariable tersebut mempunyai ,ield sesuai dengan
.(hs
Kalau digambarkan! maka struktur (hs1 dan (hs2 dapat dilihat seperti
berikut &
)emrograman C
Eko Kurniawan Khannedy
5H*1 5H*:
N)5 N?5? N)L?)
3W*
N)L?)
3?*
N)L?)
]3)N
N)L?)
?KH)T
)N2SM N)5 N?5? N)L?)
3W*
N)L?)
3?*
N)L?)
]3)N
N)L?)
?KH)T
)N2SM
/ntuk mengisi 4ilai /.# dari (hs1 maka perintahnya adalah &
5s1.Nilai3W*=@6.
scan($Ci!9O5s1.Nilai3W*%.//memBaca data dari 8e+Board
Contoh program yang menggunakan -ariable yang bertipe bentukan dapat
dilihat di halaman berikutnya
#include "stdio.#
#include "conio.#
#include "string.#
struct W5s
&
car N)5I11J.
car NamaI:1J.
int Nilai3W*9Nilai3?*9Nilai]uiL.
(loat Nilai?8ir.
car indeK.
7.
main$%
&
W5s ms19ms:.
'rint($Pengisian 2ata!%.
'rint($N)5 : %.gets$ms1.N)5%.
'rint($N?5? : %.gets$ms1.Nama%.
'rint($Nilai ]3)N : %.scan($Cd!9Oms1.Nilai]uiL%.
'rint($Nilai 3W* : %.scan($Cd!9Oms1.Nilai3W*%.
'rint($Nilai 3W?* : %.scan($Cd!9Oms1.Nilai3?*%.
ms1.Nilai?8ir=6.:*ms1.Nilai]uiL16.;*ms1.Nilai3W*16.@*ms1.N
ilai3?*.
i($ms1.Nilai?8ir#=G6% ms1.indeK=>?>.else
i($ms1.Nilai?8ir#=A6% ms1.indeK=>/>.else
i($ms1.Nilai?8ir#=<6% ms1.indeK=>C>.else
i($ms1.Nilai?8ir#=:6% ms1.indeK=>2>.else
i($ms1.Nilai?8ir#=66% ms1.indeK=>S>.
ms:=ms1. // mengisi8an semua data di ms1 8e ms:
'rint($2ata +ang tela dimasu8an :!%.
'rint($N)5 : Cs-n9ms:.N)5%.
'rint($N?5? : Cs-n9ms:.Nama%.
'rint($Nilai ]3)N : Ci-n9ms:.Nilai]uiL%.
'rint($Nilai 3W* : Cd-n!9ms:.Nilai3W*%.
'rint($Nilai 3W?* : Cd-n!9ms:.Nilai3?*%.
'rint($Nilai ?8ir: C.:(-n!9ms:.Nilai?8ir%.
'rint($)ndeK : Cc-n!9ms:.indeK%.
getc$%.
7
)emrograman C
Eko Kurniawan Khannedy
Arra$ tru't
#etiap tipe data dapat dibuat dalam bentuk array Begitu "uga dengan tipe
data yang dibuat dengan perintah stru't
Contoh program di bawah ini dapat men"elaskan 'ara penggunaan array
yang bertipe data buatan
#include "stdio.#
#include "conio.#
#include "string.#
#de(ine ma8s ;
struct W5s
&
car N)5IHJ.
car NamaI:1J.
int Nilai3W*9Nilai3?*9Nilai]uis.
(loat Nilai?8ir.
car indeK.
7.
main$%
&
W5s msIma8sJ. // arra+ struct
int i.
(or$i=6.i"ma8s.i11%
&
'rint($EPengisian 2ata 5aasisUa Ke-Ci-nE9i11%.
'rint($EN)5 : E%.((lus$stdin%.gets$msIiJ.N)5%.
'rint($EN?5? : E%.((lus$stdin%.gets$msIiJ.Nama%.
'rint($ENilai ]3)N : E%.scan($ECdE9OmsIiJ.Nilai]uis%.
'rint($ENilai 3W* : E%.scan($ECdE9OmsIiJ.Nilai3W*%.
'rint($ENilai 3W?* : E%.scan($ECdE9OmsIiJ.Nilai3?*%.
msIiJ.Nilai?8ir=6.:*msIiJ.Nilai]uis16.;*msIiJ.Nilai3W*16.@*msIiJ.Nilai3?*.
i($msIiJ.Nilai?8ir#=G6% msIiJ.indeK=Z?Z.else
i($msIiJ.Nilai?8ir#=A6% msIiJ.indeK=Z/Z.else
i($msIiJ.Nilai?8ir#=<6% msIiJ.indeK=ZCZ.else
i($msIiJ.Nilai?8ir#=:6% msIiJ.indeK=Z2Z.else
i($msIiJ.Nilai?8ir#=6% msIiJ.indeK=ZSZ.
7.
clrscr$%.
'rint($E2ata +ang tela dimasu8an adala : -nE%.
'rint($E-----------------------------------------------------------------------nE%.
'rint($EP N)5 P N?5? P ]3)* P 3W* P 3?* P N ? P )N2SM P-nE%.
'rint($E-----------------------------------------------------------------------nE%.
(or$i=6.i"ma8s.i11%
&
'rint($EP C-Gs P C-:6s P C;i P C;i P C;i P CA.:( P Cc P-nE9
msIiJ.N)59msIiJ.Nama9msIiJ.Nilai]uis9msIiJ.Nilai3W*9
msIiJ.Nilai3?*9msIiJ.Nilai?8ir9msIiJ.indeK%.
7
'rint($E-----------------------------------------------------------------------nE%.
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Kalau program tersebut di"alankan maka "alannya program dalam dilihat di
bawah ini &
Pengisian 2ata 5aasisUa Ke-1
N)5 : 161HF6:@
N?5? : ?ndri Her+andi
Nilai ]3)N : F6
Nilai 3W* : G6
Nilai 3W?* : H6
Pengisian 2ata 5aasisUa Ke-:
N)5 : 161HF6:<
N?5? : Her+ 2Ui ,ulianto
Nilai ]3)N : 1:
Nilai 3W* : @A
Nilai 3W?* : H6
Pengisian 2ata 5aasisUa Ke-;
N)5 : 161HF661
N?5? : )rma+anti
Nilai ]3)N : G6
Nilai 3W* : H6
Nilai 3W?* : 166
2ata +ang tela dimasu8an adala :
-----------------------------------------------------------------------
P N)5 P N?5? P ]3)* P 3W* P 3?* P N ? P )N2SM P
-------------------------------------------------------------------------
P 161HF6:@ P ?ndri Her+andi P F6 P G6 P H6 P G;.66 P ? P
P 161HF6:< P Her+ 2Ui ,ulianto P 1: P @A P H6 P A<.:6 P / P
P 161HF661 P )rma+anti P G6 P H6 P 166 P H;.66 P ? P
-----------------------------------------------------------------------
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB XI
POINTER
IF
Pointer ?
)ointer adalah sebuah -ariabel yang isi datanya adalah alamat memori
atau -ariabel lain #ehingga pointer dapat "uga disebut sebagai -ariabel alamat
*address -ariable+
Deklarasi pointer
/ntuk mendeklarasikan sebuah pointer! perintah dasarnya adalah &
W+'edata *namaDariaBel.
/ntuk lebih "elasnya adalah &
int *'int.
(loat *'(loat.
Wms *'ms.
)ada 'ontoh ke$1 kita mendeklarasikan sebuah pointer bernama pint yang
menun"uk ke suatu alamat di memori yang menampung sebuah data bertipe
integer Contoh ke$2 mendeklarasikan sebuah -ariabel pointer bernama p,loat
yang menun"uk ke suatu alamat yang menampung sebuah data bertipe ,loat!
begitu "uga dengan 'ontoh ke$7 yang mendeklarasikan suatu -ariabel bernama
pmhs yang menun"uk ke suatu data yang bertipe .mhs
)emrograman C
Eko Kurniawan Khannedy
Pengisian data ke (ariabel pointer
)engisian data ke -ariabel pointer bisa berarti pengisian alamat memori ke
-ariabel tersebut atau pengisian data yang ditun"uk oleh pointer
/ntuk lebih "elasnya! perhatikan program dibawah ini &
61: #include "stdio.#
6:: #include "conio.#
6;: #include "string.#
6<:
6@: main$%
6A: &
6F: car c9*'c.
6G: int i9*'i.
6H: (loat (9*'(.
16: clrscr$%.
11: c=Z?Z.i=F.(=A.:@.
1:: 'rint($Ec : alamat=6KC'9 isi=Cc-nE9 Oc9 c%.
1;: 'rint($EK : alamat=6KC'9 isi=Cd-nE9 Oi9 i%.
1<: 'rint($E+ : alamat=6KC'9 isi=C@.:(-nE9 O(9 (%.
1@: 'c=Oc.
1A: 'i=Oi.
1F: '(=O(.
1G: 'rint($E'c: alamat=6KC'9 isi=Cc-nE9 'c9 *'c%.
1H: 'rint($E'i: alamat=6KC'9 isi=Cd-nE9 'i9 *'i%.
:6: 'rint($E'(: alamat=6KC'9 isi=C@.:(-nE9 '(9 *'(%.
:1: *'c=Z/Z.
::: *'i=1:@.
:;: *'(=@1:.@A.
:<: 'rint($Ec : isi=Cc-nE9 c%.
:@: 'rint($EK : isi=Cd-nE9 i%.
:A: 'rint($E+ : isi=C@.:(-nE9 (%.
:F: getc$%.
:G: return 6.
:H: 7
;ika dieksekusi! maka akan menghasilkan sebuah tampilan sebagai berikut &
c : alamat=6KFFF@9 isi=?
K : alamat=6KFFF:9 isi=F
+ : alamat=6KFFSS9 isi= A.:@
'c: alamat=6KFFF@9 isi=?
'i: alamat=6KFFF:9 isi=F
'(: alamat=6KFFSS9 isi= A.:@
c : isi=/
K : isi=1:@
+ : isi=@1:.@A
Keterangan )rogram &
)ada baris 7 & )endeklarasian sebuah -ariabel ' dengan tipe 'har! dan sebuah
pointer p' yang merupakan pointer 'har
)ada baris : & )endeklarasian sebuah -ariabel i dengan tipe int! dan sebuah
pointer pi yang merupakan pointer int
)ada baris < & )endeklarasian sebuah -ariabel * dengan tipe int! dan sebuah
pointer p* yang merupakan pointer ,loat
)ada baris 11 & )engisian -ariabel ' dengan karakter ^%W! -ariabel i dengan
nilai 7! dan -ariabel * dengan nilai ?25
)ada baris 12 & (enampilkan alamat -ariabel ' dan isinya
)ada baris 17 & (enampilkan alamat -ariabel i dan isinya
)ada baris 1> & (enampilkan alamat -ariabel * dan isinya
)emrograman C
Eko Kurniawan Khannedy
)ada baris 15 & Mariabel pointer p' diisi dengan alamat -ariabel ' sehingga
kedua -ariabel menga'u ke tempat yang sama sehingga ketika isi p' diubah
maka berarti merubah isi -ariabel ' dan begitu "uga sebaliknya
)ada baris 15 & Mariabel pointer pi diisi dengan alamat -ariabel i sehingga
kedua -ariabel menga'u ke tempat yang sama sehingga ketika isi pi diubah
maka berarti merubah isi -ariabel i dan begitu "uga sebaliknya
)ada baris 15 & Mariabel pointer p* diisi dengan alamat -ariabel * sehingga
kedua -ariabel menga'u ke tempat yang sama sehingga ketika isi p* diubah
maka berarti merubah isi -ariabel * dan begitu "uga sebaliknya
Baris 1?! 17 dan 1: & (enampilkan data yang ditun"uk oleh pointer p'A piA
dan p*! yang hasilnya pasti sama dengan hasil baris 12! 17! dan 1>
Baris 1< & (engisi data ke alamat yang ditun"uk oleh p' dengan nilai B! yang
berarti "uga mengganti nilai -ariabel '
Baris 20 & (engisi data ke alamat yang ditun"uk oleh pi dengan nilai 125!
yang berate "uga mengganti nilai -ariabel i
Baris 21 & (engisi data ke alamat yang ditun"uk oleh p* dengan nilai 5125?!
yang berarti "uga mengganti nilai -ariabel *
Baris 22!27 dan 2> & (enampilkan isi nilai -ariabel 'A i dan *! yang telah
diubah oleh -ariabel pointernya
Contoh Aplikasi Pointer
#alah satu penggunaan pointer adalah untuk membuat suatu array yang
dinamis *banyaknya data yang bisa ditampung sesuai keperluan+
#ebagaimana kita ketahui "ika kita membuat suatu program yang dapat
menampung data nilai sebanyak 5 buah maka kita akan membuat suatu -ariabel
array yang bertipe int dengan perintah int (ataILJ2 8engan 'ara begitu maka
program hanya akan ber"alan dengan baik "ika data yang diinputkan banyaknya
di kurang atau sama dengan 5 buah %pa yang ter"adi ketika data yang akan
diinputkan ternyata 10 buah! maka langkah yang dilakukan adalah harus
mengubah programnya dan mengganti int (ataILJ men"adi int (ataI1FJ2
Cara lain untuk membuat program tersebut adalah dengan menggunakan
suatu -ariabel array yang dinamis dimana pemesanan tempat yang diperlukan
untuk menyimpan data tidak dideklarasikan dalam program tapi dilakukan se'ara
runtime *ketika program ber"alan+
61: #include "stdio.#
6:: #include "conio.#
6;: #include "stdliB.#
6<: main$%
6@: &
6A: int *data.
6F: int i9Ban+a8data.
6G: 'rint($E/an+a8 data +ang a8an diin'ut8an : E%.scan($ECiE9OBan+a8data%.
6H: data=$int *%malloc$siLeo($int%*Ban+a8data%.
16: (or$i=6.i"Ban+a8data.i11%
11: &
1:: 'rint($EPemasu8an data 8e-Ci :E9i11%.scan($ECiE9$data1i%%.
1;: 7
1<: 'rint($E2ata +ang tela diin'ut8an adala : -nE%.
1@: (or$i=6.i"Ban+a8data.i11%
1A: 'rint($E2ata 8e-Ci : Ci-nE9i119*$data1i%%.
)emrograman C
Eko Kurniawan Khannedy
1F: getc$%.
1G: return 6.
1H: 7
.ampilan yang dihasilkan oleh program diatas adalah sebagai berikut &
/an+a8 data +ang a8an diin'ut8an : @
Pemasu8an data 8e-1 :1:
Pemasu8an data 8e-: :;
Pemasu8an data 8e-; :<
Pemasu8an data 8e-< :@
Pemasu8an data 8e-@ :AF
2ata +ang tela diin'ut8an adala :
2ata 8e-1 : 1:
2ata 8e-: : ;
2ata 8e-; : <
2ata 8e-< : @
2ata 8e-@ : AF
Keterangan program &
Baris ? & )endeklarasian sebuah -ariabel pointer int yang bernama (ata
Baris 7 & )endeklarasian -ariabel i sebagai 'ounter dan 4an@ak(ata untuk
menyimpan banyaknya data
Baris : & )engisian data banyak data
Baris < & )emesanan alokasi di memori untuk -ariabel pointer data sebesar
besarnya int *siMeo*+int,+ dikali dengan 4an@ak(ata
Baris 10 & )erulangan untuk memba'a data dari data ke$0 sampai ke
4an@ak(ata$1
Baris 12 & (emba'a data dari keyboard dan dimasukan ke alamat data pada
urutan ke$i
Baris 15 U 1? & (enampilkan isi data yang ditun"uk oleh pointer
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB XII
OPERASI FILE
IF
Membuat #ile Te)t
0ile teEt adalah suatu ,ile yang pola penyimpanannya datanya dalam bentuk
karakter #ehingga kalau suatu -ariabel bertipe int *2 byte+ dengan isi 10000!
maka akan disimpan dalam bentuk karakter 10000 *5 karakter+ sehingga ,ile
yang dibuat besarnya 5 byte
Contoh program untuk membuat ,ile teEt &
1
:
;
<
@
A
F
G
H
16
11
1:
1;
1<
1@
1A
1F
1G
1H
:6
:1
::
:;
:<
#include "stdio.#
#include "conio.#
#include "*tring.#
main$%
&
F)LS *(.
car stIG1J=EE.
(=(o'en$Estrings.datE9EUE%.
i( $([=N3LL%
&
do&
'rint($E5asu8an string : E%.gets$st%.
('rint($(9ECs-nE9st%.
7Uile $strlen$st%#6%.
(close$(%.
'rint($EFile selesai di BuatE%.
7
else
&
'rint($EFile gagal diBuatE%.
7
getc$%.
return 6.
7
Keterangan program &
$ Baris ? & )erintah 039E =, berarti deklarasi -ariabel , yang merupakan
pointer ke suatu ,ile
$ Baris : & membuat link / menghubungkan -ariabel ,ile , dengan ,ile
stringsdat dengan mode operasi adalah w *write+
$ Baris < & ;ika ,ile sukses di buat *-ariabel , menun"uk ke suatu ,ile/tidak
4/99+ maka program akan menger"akan perintah baris 11 U 1?
$ Baris 11 dan 1>& )erulangan selama string yang dimasukan pan"angnya
lebih dari 0
$ Baris 12 & Ba'a sebuah string! masukan ke -ariabel st
)emrograman C
Eko Kurniawan Khannedy
$ Baris 17 & .ulis string st ke ,ile ,! dan kemudian diberikan tanda pindah
baris *2n+
$ Baris 15 & (enutup hubungan/link ke ,ile ,
$ Baris 1: & ;ika ,ile tidak bisa dibuat! maka akan menampilkan pesan 0ile
gagal dibuat
;ika data yang dimasukan ingin disimpan di bagian belakang ,ile! maka mode
yang digunakan adalah mode AaB
Memba'a #ile Te)t
(ode yang dipakai dalam memba'a data teEt adalah mode ArB 0ile yang
diba'a bisa berekstensi apa sa"a
)erhatikan perintah berikut &
1
:
;
<
@
A
F
G
H
16
11
1:
1;
1<
1@
1A
1F
1G
1H
16
:1
::
:;
:<
:@
:A
#include "stdio.#
#include "conio.#
#include "*tring.#
main$%
&
F)LS *(.
car stIG1J=EE.
(=(o'en$Estrings.datE9ErE%.
i( $([=N3LL%
&
clrscr$%.
Uile $(scan($(9!Cs!9st%[=S4F% //$(gets$st9G69(%[=N3LL%
&
'rint($ECsE9st%.
7
(close$(%.
'rint($EFile suda diBacaE%.
7
else
&
'rint($EFile gagal diBacaE%.
7
getc$%.
return 6.
7
Keterangan program &
$ Baris : & Buka sebuah ,ile *stringsdat+ dalam mode ArB *read+
$ Baris < U 1: & "ika -ariabel 0 tidak 4/99 *,ile sukses di buka+! maka
program akan mengeksekusi program baris 11 U 17
$ Baris 12 & )erulangan selama ,s'an, belum men'apai E60 *end o, ,ile+
0s'an, akan mengambil data dari ,ile bertipe string *JsB+ disimpan di st
%lternati, lain adalah menggunakan perintah ,gets
$ Baris 1> & (enuliskan data yang telah diba'a
)emrograman C
Eko Kurniawan Khannedy
Membuat #ile Biner
0ile biner adalah suatu ,ile yang pola penyimpanannya adalah dengan
menuliskan data se'ara biner #ebagai 'ontoh! "ika data yang disimpan ke ,ile
tersebut bertipe int *2 byte+ dengan isi -ariabel 10000! maka akan disimpan
sebesar 2 byte dengan isi & 2710h .ipe "enis ini sangat 'o'ok untuk penyimpanan
data dalam bentuk stru't )emba'aan ,ile biner dilakukan perblok
Contoh program &
1
:
;
<
@
A
F
G
H
16
11
1:
1;
1<
1@
1A
1F
1G
1H
:6
:1
::
:;
:<
#include "stdio.#
#include "conio.#
main$%
&
F)LS *(.
int i.
(=(o'en$Edataint.aBcE9EUBE%.
i($([=N3LL%
&
do&
'rint($E5asu8an ang8a : E%.scan($ECdE9Oi%.
i($i[=6%
(Urite$Oi9siLeo($int%919(%.
7Uile $i[=6%.
(close$(%.
'rint($EFile tela selesai diBuatE%.
7
else
&
'rint($E2ata tida8 Bisa diBuatE%.
7
getc$%.
return 6.
7
Keterangan program &
$ Baris 7 & Buka ,ile dalam mode AwbB *write binary+
$ Baris : U 17 & ;ika ,ile bisa dibuat! maka akan melakukan perintah$
perintah di baris 10 U 1?
$ Baris 10 U 1> & )erulangan selama data yang diba'a dari keyboard tidak
nol
$ Baris 11 & Ba'a suatu integer
$ Baris 12$17 & ;ika data tidak nol maka disimpan dalam ,ile , sebanyak 1
data sebesar 2 byte *si]eo,*int++ yang ada di alamat Oi
$ Baris 15 & (enutup ,ile ,
)emrograman C
Eko Kurniawan Khannedy
Memba'a #ile Biner
/ntuk memba'a ,ile biner! mode operasi ,ilenya adalah ArbB *read binary+
)emba'aan data untuk tipe biner dilakukan perblok! sehingga kita harus tahu
besar data yang akan diba'a
)erhatikan program di bawah ini &
1
:
;
<
@
A
F
G
H
16
11
1:
1;
1<
1@
1A
1F
1G
1H
:6
:1
#include "stdio.#
#include "conio.#
main$%
&
F)LS *(.
int i.
(=(o'en$Edataint.aBcE9ErBE%.
i($([=N3LL%
&
Uile$(read$Oi9siLeo($int%919(%==1%
'rint($Eang8a : Ci-nE9i%.
(close$(%.
'rint($EFile tela selesai diBacaE%.
7
else
&
'rint($E2ata tida8 Bisa diBacaE%.
7
getc$%.
return 6.
7
Keterangan program &
$ Baris 7 & Buka ,ile dataintab' dalam mode rb *read binary+
$ Baris : U 17 & ;ika ,ile bisa dibuka! maka akan mengeksekusi perintah
baris 10 U 17
$ Baris 10 & 9akukan pemba'aan data ,read! simpan data ke alamat 3 *Oi+!
sebesar 2 byte *si]eo,*int++! sebanyak 1 buah integer! dari ,ile ,
)emba'aan ini diulang selama ,read LL 1 ,read menghasilkan nilai
banyak data yang diba'a
$ Baris 11 & (enuliskan data hasil pemba'aan *i+ ke layar
$ Baris 12 & (enutup ,ile ,
)emrograman C
Eko Kurniawan Khannedy
Memba'a #ile Biner e'ara A'ak
%da kalanya kita ingin mengambil data dari posisi tengah ,ile /ntuk itu!
ada suatu ,ungsi ,seek! yang gunanya untuk memindahkan kursor ,ile ke posisi
tertentu
)osisi awal pen'arian ada 7 "enis yaitu #EEK_#E. *dari awal ,ile+!
#EEK_C/5 *dari posisi sekarang+! #EEK_E48 *dari akhir ,ile+
Contoh perintah &
$ ,seek*,!10!#EEK_#E.+! pindahkan pointer ,ile ke posisi *byte+ ke$10 dari
awal ,ile
$ ,seek*,!5!#EEK_C/5+! pindahkan pointer ,ile 5 byte dari posisi pointer
sekarang
$ ,seek*,!1!#EEK_E48+! pindahkan pointer posisi paling akhir *1 byte
sebelum E60+
;adi kalau kita mempunyai ,ile biner yang digunakan untuk menyimpan
data int! maka kalau kita ingin mengambil data ke$5 perintah ,seeknya adalah
,seek*,!5=si]eo,*int+!#EEK_#E.+
Contoh dibawah ini akan menampilkan data dari posisi 7 dan seterusnya
1
:
;
<
@
A
F
G
H
16
11
1:
1;
1<
1@
1A
1F
1G
1H
:6
:1
#include "stdio.#
#include "conio.#
main$%
&
F)LS *(.
int i.
(=(o'en$Edataint.aBcE9ErBE%.
i($([=N3LL%
&
(see8$(9;*siLeo($int%9*SSKX*SW%.
Uile$(read$Oi9siLeo($int%919(%==1%
'rint($Eang8a : Ci-nE9i%.
(close$(%.
'rint($EFile tela selesai diBacaE%.
7
else
&
'rint($E2ata tida8 Bisa diBacaE%.
7
getc$%.
return 6.
7
)emrograman C
Eko Kurniawan Khannedy
Diktat Mata Kuliah Pemrograman I
BAB XIII
GRAPHIC
IF
Inisialisasi *rafik
/ntuk menggambar gra,ik dalam .urbo C! maka langkah yang pertama kali
harus dilakukan adalah dengan mengubah mode layar dari mode teEt men"adi
mode gra,ik! dengan 'ara &
#include "gra'ics.#
main$%
&
int gra'driDer9 gra'mode.
gra'driDer=^V?.
gra'mode=^V?H).
initgra'$Ogra'driDer9Ogra'mode9!C:--WC--/V)!%.
//disinila ditulis 'erinta 'enggamBaran
getc$%.
closegra'$%.
return 6.
7
/ntuk menutup mode gra,ik dan kembali ke mode teEt! perintah yang
diperlukan adalah 'losegraph
/ntuk melihat dri-er dan mode yang bisa dipakai! 'arilah keterangannya
dengan menggunakan ,asilitas help atau tempatkan kursor di posisi MN%F3
kemudian tekan tombol Ctrl+01
Mengambil nilai Koordinat + dan ,
%da beberapa perintah untuk mengambil posisi koordinat E atau y!
diantaranya &
getmaKK$%
)erintah ini digunakan untuk mengambil nilai maksimal dari koordinat E
0ungsi ini mempunyai nilai integer
getmaK+$%
)erintah ini digunakan untuk mengambil nilai maksimal dari koordinat E
0ungsi ini menghasilkan nilai integer
getK$%
)erintah ini digunakan untuk mengambil posisi E dari kursor yang sedang
akti,
get+$%
)emrograman C
Eko Kurniawan Khannedy
)erintah ini digunakan untuk mengambil posisi y dari kursor yang sedang
akti,
Pembuatan *aris- Kotak
Mem4uat Kotak
/ntuk membuat/menggambar kotak! perintahnya adalah &
rectangle$K19+19K:9+:%.
8imana E1Lkoordinat kiri/kanan! y1Lkoordinat atas/bawah! E2Lkoordinat
kiri/kanan! y2Lkoordinat atas/bawah
Contoh &
rectangle$6969getmaKK$%9getmaK+$%%.
rectangle$169169getmaKK$%-169getmaK+$%-16%.
(embuat Naris
/ntuk membuat/menggambar garis! perintahnya adalah &
line$K19+19K:9+:%.
8imana E1Lkoordinat kiri/kanan! y1Lkoordinat atas/bawah! E2Lkoordinat
kiri/kanan! y2Lkoordinat atas/bawah
Contoh &
line$6969getmaKK$%9getmaK+$%%.
line$getmaKK$%969getmaKK$%/:9getmaK+$%/:%.
Mem4uat garis (engan mo$etoA lineto (an linerel
)erintah lineto digunakan untuk membuat suatu garis dari posisi kursor
)erintah mo-eto digunakan untuk memindahkan kursor ke posisi tertentu!
,ungsinya seperti gotoEy dalam mode teEt
Bentuk dasar untuk perintah mo-eto adalah
moDeto$K9+%
8imana E adalah koordinat E yang dimaksud! y adalah koordinat y yang
diinginkan
Bentuk dasar untuk perintah lineto adalah
lineto$K9+%.
8imana E adalah koordinat E yang dimaksud! y adalah koordinat y yang
diinginkan
Contoh &
moDeto$1669166%.
lineto$1:@91@6%.
lineto$F@91@6%.
lineto$1669166%.
)emrograman C
Eko Kurniawan Khannedy
Mem4uat garis (engan mo$erel (an linerel
)erintah linerel digunakan untuk menggambar suatu garis dari posisi kursor
akti, ke posisi yang diinginkan berdasarkan "arak dari posisi kursor akti, )erintah
mo-erel digunakan untuk memindahkan kursor ke posisi tertentu dari posisi
kursor akti, berdasarkan "arak dari posisi kursor akti, tersebut
Bentuk dasar untuk perintah linerel adalah &
linerel$dK9 d+%.
8imana dE adalah "arak koordinat E baru dari posisi E kursor akti,! dan dy
adalah "arak koordinat y baru dari posisi y kursor akti,
Bentuk dasar untuk perintah mo-erel adalah &
moDerel$dK9 d+%.
8imana dE adalah "arak koordinat E baru dari posisi E kursor akti,! dan dy
adalah "arak koordinat y baru dari posisi y kursor akti,
Contoh &
moDeto$1669166%.
linerel$:@9@6%.
linerel$-@696%.
linerel$:@9-@6%.
Pembuatan .ingkaran- /lips- Ar' !Busur"
Mem4uat 3ingkaran
/ntuk membuat/menggambar lingkaran! perintahnya adalah &
circle$K9+9r%.
8imana! E adalah koordinat E dari titik tengah! y adalah koordinat y dari
titik tengah dan r adalah radius lingkaran
Contoh &
circle$getmaKK$%/:9 getmaK+$%/:9166%.
circle$@69@69:@%.
Mem4uat Nllipse
/ntuk membuat/menggambar elip! perintah yang dipakai adalah &
elli'se$K9+9d19d:9rK9r+%.
dimana E adalah koordinat E dari titik tengah! y adalah koordinat y dari titik
tengah! d1 dan d2 merupakan dera"at awal ellips! rE adalah radius ellipse di
sumbu E! dan ry adalah radius ellipse di sumbu y
Contoh &
elli'se$getmaKK$%/:9getmaK+$%/:9691G691669@6%.
elli'se$:669:669H69:F691@69:@%.
)emrograman C
Eko Kurniawan Khannedy
Mem4uat Busur
(embuat busur mirip dengan membuat ellipse )erbedaannya adalah tidak
diperlukan radius E atau radius y! karena radius E dan radius y dalam busur
adalah sama
arc$K9+9d19d:9r%.
Contoh &
arc$getmaKK$%/:9 getmaK+$%/:9 69:F69166%.
arc$1@691@69691G69F@%.
Penulisan Te)t
)erintah$perintah yang dipakai untuk mengatur dan menuliskan suatu teEt
ke layar dalam mode gra,ik! adalah &
settextst@le
)erintah ini digunakan untuk mengatur karakteristik tulisan
Bentuk dasar perintahnya adalah &
setteKtst+le$Bentu8(ont9ara(ont9Besar(ont%.
8imana bentuk ,ont adalah bilangan yang menun"uk ke bentuk huru,! arah
,ont menun"ukan arah penulisan huru, apakah hori]ontal *0+! atau -ertikal *1+
dan besar ,ont adalah bilangan yang menun"ukan besarnya ,ont
Contoh &
setteKtst+le$1919@%.
setteKtst+le$<969@%.
settextGusti*@
)erintah ini digunakan untuk mengatur posisi penulisan teEt! apakah rata
kanan! tengah! rata kiri serta posisi atas! tengah dan bawah
Bentuk dasar adalah &
setteKt0usti(+$oriLontal9 Derti8al%
8imana horisontal adalah bilangan yang menun"ukan perataan di bagian
hori]ontal dengan nilai yang diperbolehkan adalah 0Lkiri! 1Ltengah! 2Lkanan!
dan -ertikal menun"ukan perataan di bagian -erikal dimana bilangan yang
diperbolehkan adalah 0Lbawah! 1Ltengah! 2Latas
Contoh &
setteKt0usti(+$191%.
setteKt0usti(+$196%.
outtextx@
)emrograman C
Eko Kurniawan Khannedy
)erintah diatas digunakan untuk menuliskan string ke layar dalam modus
gra,ik di posisi tertentu! sesuai "usti,ikasinya
Bentuk perintah dasarnya &
outteKtK+$K9+9teKt%.
8imana E dan y adalah posisi yang diinginkan dan teEt adalah tulisan yang
ingin ditampilkan
Contoh &
outteKtK+$:669:69!3N)K45!%.
outteKtK+$<669@69!3niDersitas Kom'uter )ndonesia!%.
outtext
)erintah diatas digunakan untuk menulis string dalam posisi kursor
Bentuk dasarnya adalah &
outteKt$teKt%.
Contoh &
outteKt$3niDersitas Kom'uter )ndonesia!%.
outteKt$We8ni8 )n(ormati8a!%.
Pengarsiran
)erintah$perintah yang diperlukan untuk membuat suatu bentuk yang sudah
terarsir adalah &
Set*illst@le
)erintah set,illstyle digunakan untuk mengatur pengarsiran
Bentuk dasarnya adalah &
set(illst+le$Bentu89Uarna%.
8imana bentuk adalah bilangan antara 0 12 yang menandakan bentuk
arsiran dan warna adalah warna dari arsirannya
Contoh &
set(illst+le$19TS2%.
Bar
)erintah bar digunakan untuk membuat suatu bentuk kotak yang telah
diarsir
/ntuk membuat/menggambar kotak! perintahnya adalah &
Bar$K19+19K:9+:%.
8imana E1Lkoordinat kiri/kanan! y1Lkoordinat atas/bawah! E2Lkoordinat
kiri/kanan! y2Lkoordinat atas/bawah
Contoh &
Bar$6969getmaKK$%9getmaK+$%%.
Bar$169169getmaKK$%-169getmaK+$%-16%.
4ar6(
)emrograman C
Eko Kurniawan Khannedy
)erintah bar7d adalah perintah untuk membuat suatu bentuk kotak 7
dimensi
)erintah dasarnya adalah &
Bar;d$K19+19K:9+:9teBal9atas%.
8imana E1Lkoordinat kiri/kanan! y1Lkoordinat atas/bawah! E2Lkoordinat
kiri/kanan! y2Lkoordinat atas/bawah! tebal adalah ketebalan kotak! dan
parameter atas diisi 0*bar tidak ditutup+ atau 1*bar ditutup+
Contoh &
Bar;d$1919@69;6691691%.
Bar;d$A69191169;669@96%.
piesli'e
)erintah diatas digunakan untuk membuat suatu lingkaran yang telah
diarsir
)erintah dasarnya adalah &
'ieslice$K9+9d19d:9radius%.
8imana E dan y adalah koordinat titik tengah! d1 dan d2 adalah dera"at
awal dan akhir! dan radius adalah radius lingkaran yang ingin dibuat
Contoh &
'ieslice$getmaKK$%/:9 getmaK+$%/:9H69;A69@6%.
'ieslice$getmaKK$%/:-169 getmaK+$%/:-16969H69@6%.
/ntuk perintah lain 'oba pela"ari di bagian help dengan 'ara tempatkan
kursor di graphi'sh kemudian tekan Ctrl+01
)emrograman C

Anda mungkin juga menyukai