Anda di halaman 1dari 54

BAB I KONSEP DASAR PEMROGRAMAN 1.

1 Pendahuluan Konsep Dasar Pemrograman antara lain: Sebagai sarana komunikasi antara manusia dan komputer disebut bahasa komputer. Bahasa Pemrograman Komputer adalah tata cara penulisan program (kata, ekspresi, pernyataan) berupa langkah untuk menyelesaikan masalah aktor yang perlu diperhatikan adalah sintaksis, semantik dan logika Bahasa pemrograman: tingkat tinggi, menengah dan rendah

Konsep Pemecahan !asalah antara lain: !enganalisa dan memahami permasalahan dan membuat algoritma (pola ber"ikir terstruktur berisi tahap#tahap penyelesaian masalah) !embuat kode dari algoritma dalam pernyataan sesuai dengan bahasa pemrograman $esting (men%alankan program) dan debugging (menemukan kesalahan) !elakukan dokumentasi terhadap setiap langkah

&iri Pemrograman $erstruktur antara lain: !empunyai teknik pemecahan masalah yang benar !emiliki algoritma pemecahan masalah yang sederhana dan e"isien $eknik penulisan program memiliki struktur logika yang benar dan mudah dipahami !embutuhkan biaya testing yang rendah !emiliki dokumentasi yang baik

'angkah#langkah Pembuatan Program antara lain: !ende"inisikan masalah !encari solusi untuk masalah !emilih teknik pemecahan masalah dan algoritma (

!enulis program !elakukan testing dan debugging !elakukan dokumentasi !elakukan pemeliharaan Pola pikir yang terstruktur yang berisi tahap#tahap penyelesaian masalah untuk diimplementasikan dalam pemrograman Biasanya dalam program terdapat tiga struktur program: Struktur )rut Struktur Keputusan Struktur Perulangan

Definisi Algoritma

1. Se!arah Bahasa " Bahasa & adalah dari bahasa B&P' (Basic Combined Programming Language), yang dikembangkan oleh !artin *icard pada tahun (+,-. Bahasa ini memberikan ide kepada $homson yang kemudian mengembangkan bahasa yang disebut dengan B pada tahun (+-.. Selan%utnya dari bahasa B dikembangkan bahasa & oleh Dennis *icthie sekitar tahun (+-.#an di Bell $elephone 'aboratories /nc. Dan pertama kali digunakan di komputer Digital 01uipment &orporation yang menggunakan sistem )2/3. Kele#ihan Bahasa " $ersedia hampir di semua %enis komputer. Kodenya bersi"at portabel dan "leksibel. 4plikasi yang ditulis dengan & untuk suatu komputer tertentu dapat digunakan di komputer lain hanya dengan sedikit modi"ikasi. Struktur bahasa yang baik mudah dipela%ari, memudahkan pembuatan program, memudahkan pelacakan kesalahan program. Dibandingkan bahasa mesin atau assembly, & %auh lebih mudah dipahami. & berorientasi pada permasalahan, bukan pada mesin. Dapat memanipulasi data dalam bentuk bit atau byte. Proses 05ecutable program & lebih cepat.

Kelemahan " Banyaknya operator serta "lesibilitas penulisan program kadang#kadang membingungkan pemakai. Bagi pemula pada umumnya akan kesulitan menggunakan pointer. Kom$onen " Komponen bahasa c terdiri dari berbagai macam standar library (header "ile): Stdio.h &onio.h

Stru%tur Program " )ntuk dapat memahami bagaimana suatu program ditulis, maka struktur dari program harus dimengerti terlebih dahulu. Struktur dari program & dapat dilihat sebagai kumpulan dari sebuah atau lebih "ungsi#"ungsi. Berikut ini adalah stuktur dari program &:
main() { } fungsi_fungsi_lain() { statemen-statemen; }

statemen-statemen;

//fungsi utama

// fungsi-fungsi lain

contoh:
#include<stdio.h> main() { printf( !""# $%); }

Keterangan: stdio.h, header standard input output karena ada print" main(), program utama 78, a9al program dan akhir program print"(:;4''< &=)> mencetak tulisan ;allo & di layar monitor Pre$rosesor &in'lude ?include merupakan satu %enis pengarah preprosesor yang dipakai untuk membaca "ile yang dinamakan "ile %udul (header "ile), yaitu "ile yang berisi deklarasi "ungsi dan de"inisi konstanta

&ontoh:
A A #include <stdio.h> #include <conio.h>

Prepocessor Stdio.h akan memanggil "ungsi : print" (), Scan" () Scan".h akan memanggil "ungsi : clrscr(), putch(), getch() dll Gam#ar Proses $ener!emahan #ahasa "
Editor

DISK

Preprocessor Compiler Linker Loader CPU

.h
.obj .out (UNI ! .e"e (#S!

Primar$ #emor$

BAB II DASAR(DASAR PEMROGRAMAN .1 KONSEP )*PE DA)A Bahasa & menyediakan lima macam tipe data dasar, yaitu tipe data integer (nilai numerik bulat yang dideklarasikan dengan int), "loating#point (nilai numerik pecahan ketepatan tunggal yang dideklarasikan dengan "loat), double#precision (nilai numerik pecahan ketepatan ganda yang dideklarasikan dengan double), karakter (dideklarasikan dengan char), dan kosong (dideklarasikan dengan Coid) A. INT, LONG Digunakan untuk menyatakan bilangan bulat. Seperti pada char, perubah tipe signed (#) dan unsigned (D) dapat ditambahkan. *entang nilai int mulai #@6.-,E sampai @6.-,*entang nilai long mulai #6.(B-.BE@.,BE sampai 6.(B-.BE@.,B&ontoh deklarasi int :
A A int nilai& total ; atau int nilai ' () ;

B. FLOAT, DOUBLE !enyatakan bilangan pecahanFreal, maupun eksponensial. Dalam keadaan de"ault, bilang "loating point dianggap bertipe double. *entang nilai "loat mulai (.-0#@E sampai @.B 0D@E *entang nilai double mulai @.B0#@.E sampai (,-0D@.E

". "+AR 4dalah sembarang huru", angka, tanda baca tunggal. 4da 6 (dua) macam char, yaitu : (. signed !endeklarasikan char bertanda, digunakan untuk nilai negatiCe. *entang nilai mulai . sampai 6GG. 6. unsigned !endeklarasikan char tidak bertanda, untuk nilai positi". G

*entang nilai mulai #(6E sampai (6contoh deklarasi char :


A A A char letter ' *!+ ; unsigned char num,er ' -./ ; signed char 0alue ' -12 ;

D. ,OID !enyatakan tipe kosong untuk : (. mendeklarasikan "ungsi yang tidak mengembalikan nilai apapun. 6. mendeklarasikan "ungsi yang tidak menerima parameter apapun. &ontoh deklarasi Coid : !ain> atau ,oid action atau main > -%uran memori untu% ti$e data

. ,aria#el 4turan Pende"inisan Hariabel A $erdiri dari gabungan huru" dan angka dengan karakter pertama harus berupa huru". Bahasa & bersi"at case#sensitiCe artinya huru" besar dan kecil dianggap berbeda. Iadi antara nim. NIM dan Nim dianggap berbeda A A $idak boleh mengandung spasi. $idak boleh mengandung symbol#simbol khusus, kecuali garis ba9ah (underscore). Jang termasuk symbol khusus yang tidak diperbolehkan antara lain : K, L, M, ?, N, O, P, (, ), #, D, Q dsb A Pengenal harus dia9ali dengan huru" (4..R, a..S) atau karakter garis ba9ah ( )

A A

Selan%utnya dapat berupa huru", digit (...+) atau karakter garis ba9ah atau tanda dollar (K) Pan%ang pengenal bebas, tetapi hanya @6 karakter pertama yang akan terpakai. &ontoh penamaan Cariabel yang benar :

2/!, a, 5, namaTmhs, "@.+E, "B, nilai, budi, dsb. &ontoh penamaan Cariable yang salah : MnilaiTmahasis9a, E.mahasis9a, rata#rata, ada spasi, pentingN, dsb A Pengenal tidak boleh menggunakan nama yang tergolong sebagai kata# kata cadangan (reserved words) seperti int, i", 9hile dan sebagainya Bentuk umum deklarasi Cariabel:
tipe daftar-0aria,el;

&ontoh:
int 0ar_,ulat2; float 0ar_pecahan2& 0ar_pecahan-;

!emberikan 2ilai ke Hariabel


nama_0aria,el ' nilai;

&ontoh:
int 0ar_,ulat ' 2); dou,le 0ar_pecahan ' 2)./;

Latihan 2.1 /3 ---------------------------------------3/ /3 4rogram 5 6aria,el.c 3/ /3 4rogram $ontoh 6aria,el 3/ /3 ----------------------------------------3/ #include 7stdio.h7 #include 7conio.h7 main() { float ga8i&tun8; ga8i ' -)))); tun8 ' ).2 3 ga8i; 9!:; ' ga8i < tun8; printf(7=n9a8i 4o>o> ' ?p. @f7&ga8i); printf(7=nAun8angan ' ?p. @f7&tun8); printf(7=n9a8i Aotal ' ?p. @f7&9!:;);

getch(); clrscr(); } asil 5 9a8i 4o>o> ' ?p. -)))).)))))) Aun8angan ' ?p. -))) .)))))) 9a8i Aotal ' ?p. --))) .))))))

./ KONS)AN)A Pengertian konstanta adalah: Konstanta menyatakan nilai tetap. Berbeda dengan Cariabel, suatu konstanta tidak dideklarasikan namun memiliki tipe. Penulisan konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing#masing. Konstanta dapat bernilai integer, pecahan, karakter dan string. &ontoh konstanta : G.> (@> U4V> UBahasa &V Konstanta sering dipakai dalam rumus#rumus "isika dan matematika. &ontoh : phi (p) yang mempunyai nilai @.(B6,E. Phi sering dipakai untuk rumus#rumus yang berhubungan dengan lingkaran.
A A A A

Konstanta menyatakan nilai yang tetap


>ara>ter 5*!+ dan *B+ integer 5 C2 dan D-1E1 real (float dan double) 5 -1./f (untu> tipe float) atau -1./ (untu> tipe double) dan -.2e</ (ma>sudnFa -&2 G 2)/ ) string 5 74emrograman Hasar $7

$ontoh #include<stdio.h> main() { int !'2; float I'-.); char $'J!J; char HK2)L'7Aest7; printf(7@d=n7&!); printf(7@f=n7&I); printf(7@c=n7&$); printf(7@s=n7&H); }

;asil: ( 6....... 4 $est MENDE0INISIKAN KONS)AN)A E

Suatu konstanta dapat diberi nama. Pende"inisiannya dilakukan dengan menggunakan pengarah preprocessor ?de"ine.
LATIHAN 2.2 #include <stdio.h> #define phi D.2. main() { float radius& >eliling& luas; radius ' -); clrscr(); >eliling ' - 3 phi 3 radius; luas ' )./ 3 phi 3 radius 3 radius; printf(7Hata "ing>aran 5 =n7); printf(7:ari-8ari ' @f=n7& radius); printf(7Meliling ' @f=n7& >eliling); printf(7"uas ' @f=n7& luas); getch(); }

;asil: Data 'ingkaran : Iari#%ari Q 6........ Keliling Q (6G.G++++E 'uas Q ,6E.......

.1. OPERA)OR <perator atau tanda operasi adalah suatu tanda atau simbol yang digunakan untuk suatu operasi tertentu. 1. O$erator ARI)MA)IKA TTTTTTTTTTT

#perator N Oa>sud -------------------<-------------------------------------------3 N 4er>alian / N 4em,agian @ N 4em,agian modulus (pem,agian sisa) N 4engurangan < N 4ertam,ahan -------------------<--------------------------------------------

&ontoh Program
#include<stdio.h> main() { int a&,&c;

a'-; ,'D; c'a<,; printf(7@d7&c);

. O$erator -NAR* TTTTTTTTTTTTTT


#perator N Oa>sud -------------------<---------------------------------------------N PnarF minus << N 4ening>atan dengan penam,ahan nilai 2 -N 4enurunan dengan pengurangan nilai 2 (tFpe) N $ast siQeof N P>uran dari operand dalam ,Fte R N PnarF S#A T N Oenghasil>an alamat memorF operand 3 N Oenghasil>an nilai pengenal dialamatnFa U N Momplemen satu -------------------<----------------------------------------------

Keterangan O$erator -nar2 minus 3 Digunakan untuk memberi nilai minus suatu nilai numerik (bukan untuk pengurangan). !isalnya ungkapan 4D#BP& akan diartikan sebagai 4D(#B)P&. Penulisan 4##BP& berarti 4#(#B)P& O$erator 44 dan (( 3 <perator ini banyak di%umpai di statemen perulangan yang berbentuk sebagai berikut : "or(iQ(>iWQ(.>iQiD() dapat ditulis dengan operator DD sebagai berikut : "or(iQ(>iWQ(.>iDD) <perator DD dan ## yang digunakan di suatu ungkapan akan berarti lain %ika ditulis sebelum atau sesudah operandnya. &ontoh
V'/; !'V<<; asil V'E dan !'/ V'/; !'<<V; asil V'E dan !'E

/. O$erator PENGER5AAN

(.

<perator Penger%aan Digunakan untuk memindahkan nilai dari suatu ungkapan ke suatu pengenal.

TTTTTTTTTTTT

N #perator N $ontoh N Oa>sud N < ---------------<----------------------<----------------------< N ' N !'I<$ N Oenger8a>an I<$ >e !W N <' N !<'2 N !'!<2 W N -< N !-<I N !'!<I W N 3' N !3'I N !'!3I W N /' N !/'I N !'!/I W N @' N !@'I N !'!@I W <'''''''''''''<''''''''''''''''''''''<'''''''''''''''''''''''''<

&ontoh : !isalnya Cariabel / dan I adalah Cariabel#Cariabel type integer dengan nilai a9al keduanya adalah (.. !aka
;<'D; artinFa 5 ;';<D; ;'2)<D; ;'2D; ;/':-X; artinFa 5 ;';/(:-X); ;'2)/(2)-X); ;'/;

dan seterusnya.

1. O$erator +-B-NGAN <perator ;ubungan digunakan untuk menun%ukkan hubungan antara dua buah operand
______________ #perator N Oa>sud -------------------<---------------------------------------------< N "e,ih >ecil dari <' N "e,ih >ecil atau sama dengan > N "e,ih ,esar dari >' N "e,ih ,esar atau sama dengan '' N Yama dengan R' N Aida> sama dengan -------------------<----------------------------------------------

<perator hubungan banyak digunakan untuk penyeleksian kondisi dengan statemen i", do#9hile atau 9hile. 6. O$erator 7OGIKA

((

<perator 'ogika digunakan untuk membandingkan logika hasil dari operator# operator hubungan.

_____________ u,ungan "#9;M! V N Z N VTTZ N VWWZ N RV ----------<---------<-------------<-----------<---------) N ) N ) N ) N 2 ) N 2 N ) N 2 N 2 2 N ) N ) N 2 N ) 2 N 2 N 2 N 2 N ) ''''''''''<'''''''''<'''''''''''''<'''''''''''<''''''''''

)-GAS (. Buatlah 4lgoritma dan program untuk menghitung luas dan keliling lingkaran. A *umus luasQphiPrPr, sedangkan kelilingQ 6PphiPr dimana r adalah %ari# %ari dan dimasukkan melalui keyboard. (phiQ@.(B) A A A A A 4lgoritma: !asukkan %ari#%ari 'uas Q phiPrPr Kelling Q 6PphiPr $ampilkan luas $ampilkan keliling

(6

BAB III INP-) DAN O-)P-) /.1 Memasu%%an Data Dalam bahasa & proses memasukkan suatu data bisa menggunakan beberapa "ungsi pustaka yang telah tersedia. Beberapa "ungsi pustaka yang bisa digunakan adalah : s'anf89 X ungsi pustaka scan"() digunakan untuk menginput data berupa data numerik, karakter dan string secara ter"ormat. X ;al#hal yang perlu diperhatikan dalam pemakaian "ungsi scan"() : % % % % ungsi scan"() memakai penentu "ormat ungsi scan"() memberi pergantian baris secara otomatis ungsi scan"() tidak memerlukan penentu lebar "ield Hariabelnya harus menggunakan operator alamat O

Kode penentu format : X Mc : !embaca sebuah karakter X Ms : !embaca sebuah string X Mi, Md : !embaca sebuah bilangan bulat (integer) X M", Me : !embaca sebuah bilangan pecahan (real) X Mo : membaca sebuah bilangan octal X M5 : !embaca sebuah bilangan heksadesimal X Mu : !embaca sebuah bilangan tak bertanda
&ontoh :
/3 4rogram memasu>an inputan dengan ,e,erapa tipe data 3/ #include <stdio.h> #include <conio.h> 0oid main() { int 8umlah; char huruf& nimK2)L; float nilai; printf(7Oasu>>an se,uah ,ilangan ,ulat 5 7); scanf(7@d7& T8umlah ); /3 mem,aca se,uah ,ilangan ,ulat 3/ printf(7Oasu>>an se,uah >ara>ter 5 7);

(@

scanf(7@c7& Thuruf ); /3 mem,aca se,uah >ara>ter 3/ printf(7Oasu>>an nim !nda 5 7); scanf(7@s7& Tnim ); /3 mem,aca se,uah string 3/ printf(7Oasu>>an se,uah ,ilangan pecahan 5 7); scanf(7@f7& Tnilai ); /3 mem,aca se,uah ,ilangan float 3/ printf(7=nSilai 0aria,le Fang !nda masu>>an adalah 5=n7); printf(78umlah ' @d=n7& 8umlah ); printf(7huruf ' @c=n7& huruf ); printf(7nim ' @s=n7& nim ); printf(7nilai ' @f=n7& nilai ); getch(); }

gets89 X ungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat digunakan untuk memasukkan data numerik. X ;arus diakhiri dengan penekanan tombol enter. X &ursor secara otomatis akan pindah baris. X $idak memerlukan penentu "ormat

&ontoh :
/3 4rogram inputan tipe data >ara>ter/string 3/ #include :stdio.h: #include :conio.h: 0oid main() { char namaK-)L; clrscr(); printf(:Oasu>>an nama !nda 5 :); gets(nama); printf(: ello& Sama !nda adalah @s:& nama); getch(); }

get'har89 X ungsi getchar() digunakan untuk membaca data yang bertipe karakter X ;arus diakhiri dengan penekanan tombol enter X Karakter yang dimasukkan terlihat pada layar X Pergantian baris secara otomatis get'h89 dan get'he89 X ungsi getch() dan getche() digunakan untuk membaca data karakter. X Karakter yang dimasukkan tidak perlu diakhiri dengan penekanan tombol enter. X $idak memberikan e"ek pergantian baris secara otomatis

(B

X Iika menggunakan "ungsi getch() karakter yang dimasukkan tidak akan ditampilkan pada layer sehingga sering digunakan untuk meminta inputan berupa pass9ord. X Sedangkan pada getche() karakter yang dimasukkan akan ditampilkan pada layar.
&ontoh : #include stdio.h% #include conio.h% 0oid main() { char huruf2& huruf-; printf(Oasu>>an se,uah >ara>ter 5 ); huruf2 ' getche(); // >ara>ter Fang dimasu>>an a>an terlihat di laFar printf(=nMara>ter Fang !nda masu>>an adalah @c=n%& huruf2); printf(=nOasu>>an se,uah >ara>ter lagi 5 ); huruf- ' getch(); // >ara>ter Fang dimasu>>an tida> terlihat di laFar printf(=nMara>ter Fang !nda masu>>an adalah 5 @c& huruf-); getch(); }

/. . MENAMPI7KAN +ASI7 DI 7A*AR )ntuk menampilkan hasil adalah semua prosesnya dilakukan oleh "ungsi#"ungsi. ungsi#"ungsi ini prototypenya berada di "ile header stdio.h dan conio.h, seperti putchar(), puts(), print"(), dan "print"(). 0ungsi printf()
printf(string >ontrol%&arg2& arg-&...);

@d @f @c @s

Penentu format
untu> untu> untu> untu> menampil>an menampil>an menampil>an menampil>an ,ilangan ,ulat ,ilangan pecahan se,uah >ara>ter se,uah string

Memasu%an Data dari Ke2#oard 0ungsi scanf()


scanf(@f%&Tradius); c ' getchar();

Penentu format
@c membaca sebuah %ara%ter @s membaca sebuah string (dibahas pada bab Cii) @i atau @d membaca sebuah integer desimal @e atau @f membaca sebuah #ilangan real (bisa dalam bentuk eksponensial) @o membaca sebuah integer o%tal @G membaca sebuah integer he%sadesimal l a9alan untuk membaca data long int (misal : @ld) atau untuk membaca data dou#le (misal : @lf) " a9alan untuk membaca data long dou#le (misal : @"f)

(G

&ontoh 'isting Program : &ontoh : ?includeWstdio.hY main() 7 int 3Q(6@> "loat JQ(6@.BG,-> print"(ZMdZ,3)> print"(ZM"Z,J)> 8

)-GAS
(. Buatlah tampilan untuk menginput dan menampilkan biodata pribadi seseorang yang terdiri dari nama, tempat, tanggal lahir, alamat, nomor telepon, agama dan %enis kelamin.

(,

BAB I, PENGAMBI7AN KEP-)-SAN 1.1 Pen2ele%sian Kondisi Statement kondisi menggontrol %alannya program. !isal: kran yang mengatur %alannya air. Bila kran terbuka maka air akan mengalir sebaliknya %ika kran tertutup maka air tidak akan mengalir atau akan mengalir melalui tempat lain. A. Statemen if Statemen i" mempunyai beberapa Cariasi bentuk. a. Bentuk i" $unggal Sederhana Sintak dari bentuk i" tunggal sederhana adalah sebagai berikut : i" (kondisi) statemen 4rti dari perintah i" adalah jika kondisi bernilai benar, maka pernyataan dikerjakan. Kondisi harus ditulis diantara tanda kurung dan dapat berupa sembarang ungkapan. Iika digambarkan alur "lo9chartnya sebagai berikut:

!"ndisi

salah

benar #tate$en

7atihan 1.1
#include stdio.h% #include conio.h%

(-

0oid main() { float nilai; printf(Oasu>an nilai Fang didapat 5 ); scanf(@f%& Tnilai); if(nilai > E/) printf(=n Y["!O!A!SH! "P"PY RRRR=n%); getch(); } %ang!ah pr"gra$ &asu!!an Ni%ai Anda .... Oisal E/ !pa Fang dihasil>an\ !pa>ah nilai le,ih ,esar dari E/ \ :i>a nilai le,ih ,esar dari E/ Oa>a Aampil>an hasil... #e%a$at, Anda Lu%us end

7atihan 1.
#include stdio.h% #include conio.h% main() { dou,le ,eli& dis>on; printf(7:umlah pem,elian 5 ?p. 7); scanf(7@lf7&T,eli); dis>on'); if (,eli >' /))))) dis>on').)/3,eli; printf(7=nIesarnFa dis>on !nda ?p. @2).-lf7&dis>on); getch(); clrscr(); } Lang!ah pr"gra$ Oasu>>an :umlah pem,elian5 .... Oisal5 2))))) !pa>ah 2))))) >' /)))) \ :i>a pem,elian le,ih ,esar& ma>a mendapat dis>on ).)/ dari 8umlah pem,elian. :i>a pem,elian < dari /))))& ma>a tida> mendapat dis>on end

7atihan 1./
#include stdio.h% #include conio.h% main() { int :umlah!na>;

(E

float 9a8iMotor&Aun8angan&4ersenAun8angan').-; printf(79a8iMotor \7); scanf(7@f7&T9a8iMotor); printf(7:umlah !na> \7); scanf(7@d7&T:umlah!na>); if(:umlah!na>>-)4ersenAun8angan').D; Aun8angan'4ersenAun8angan39a8iMotor; printf(7=nIesarnFa Aun8angan'?p @-.-f=n7&Aun8angan); getch(); clrscr(); } Lang!ah 'r"gra$ Oasu>>an 9a8i Motor5 .... -))))) Oasu>>an :umlah !na>5.. !pa Fang dihasil>an\ :i>a 8umlah ana> >- ma>a dari ga8i >otor Aampil>an hasil ,esarnFa :i>a 8umlah ana> <- ma>a ga8i >otor Aampil>an hasil ,esarnFa end a>an mendapat tun8angan ').D persen tun8angan' ..... a>an mendapat tun8angan').- persen dari tun8angan' .......

B. Bentu% if )unggal Blo% Statemen &ontoh :


#include 7stdio.h7 main() { int 8umlahana>; float ga8i>otor&tun8angan&potongan; float persentun8angan').-; float persenpotongan').)/; printf(7ga8i>otor \7); scanf(7@f7&Tga8i>otor); printf(78umlah ana> \7); scanf(7@d7&T8umlahana>); if(8umlahana> > -) { persentun8angan ').D; persenpotongan ' ).)1; } tun8angan' persentun8angan 3 ga8i>otor; potongan 'persenpotongan 3 ga8i>otor; printf(7=n,esarnFa tun8angan'?p @2).-f=n7&tun8angan);

(+

printf(7=n,esarnFa potongan'?p @2).-f=n7&potongan); getch(); clrscr(); } Lang!ah 'r"gra$ Oasu>>an 9a8i Motor5 .... -))))) Oasu>>an :umlah !na>5.. !pa Fang dihasil>an\ :i>a 8umlah ana> >- ma>a a>an mendapat tun8angan ').D persen dari ga8i >otor dan persen potongan se,esar ).)1 Aampil>an hasil ,esarnFa tun8angan' ..... Aampil>ah hasil ,esarnFa potongan :i>a 8umlah ana> <- ma>a a>an mendapat tun8angan').- persen dari ga8i >otor potongan se,esar ).)/ Aampil>an hasil ,esarnFa tun8angan' ..... Aampil>ah hasil ,esarnFa potongan end

". Bentu% if(else Sintak dari bentuk statemen i"#else adalah sebagai berikut ini :
i( )!"ndisi* state$en+1, e%se state$en+2,

kondisi

salah

benar statemen#( statemen#6

:i>a >ondisi ,enar ma>a pernFataan-2 di>er8a>an& 8i>a >ondisi salah ma>a pernFataan-- Fang a>an di>er8a>an.

6.

&ontoh ( :
#include<stdio.h> main() { float !&I; printf(7Oasu>>an nilai a \7);scanf(7@f7&T!); printf(7Oasu>>an nilai , \7);scanf(7@f7&TI); printf(7=n7); if(I'')) printf(7@f di,agi dengan ) adalah A!M I[? ;S99!=n7&!); else printf(7@f di,agi dengan @f adalah @f=n7&!&I&!/I); }

&ontoh 6:
#include <stdio.h> #include <conio.h> 0oid main() { int Silai; printf(7Oasu>>an Silai !nda 57);scanf(7@d7&TSilai); if (Silai>E)) { printf(7Yelamat& !nda "ulus7); } else { printf(7Oaaf& !nda Ielum Ierhasil7); } getch(); } %ang!ah pr"gra$ &asu!!an Ni%ai Anda .... Oisal E/ !pa Fang dihasil>an\ !pa>ah nilai le,ih ,esar dari E/ \ :i>a nilai le,ih ,esar dari E/ Oa>a Aampil>an hasil... #e%a$at, Anda Lu%us :i>a nilai le,ih >ecil dari E/ Oa>a Aampil>an asil.... &aa(, Anda Be%u$ Berhasi% end

7atihan 1.1
#include 7stdio.h7 #include 7conio.h7 main() {

6(

char namaK-)L; int umur; clrscr(); printf(7Sama $alon 4ega]ai 5 7);gets(nama); printf(7Pmur 5 7);scanf(7@d7&Tumur); if (umur>'-) TT umur <'D)) { printf(7=nYelamat...& @s7&Tnama); printf(7=n=n!nda Oasu> Mategori Menai>an :a,atan...R7); } else { printf(7=nOaaf...& @s7&Tnama); printf(7=n=nPmur !nda Aida> Oasu> Mategori Menai>an :a,atan...R7); } getch(); }

Hasi% pr"gra$ Oasu>an Sama $alon 4ega]ai Oasu>an Pmur 5 ..... 5 .....

Ta$pi%an hasi% Oaaf...& !ditFa Pmur !nda Aida> Oasu> Mategori Menai>an :a,atan...R

D. Bentu% if(else if ..... else Sintak dari bentuk ini adalah sebagai berikut : i"(kondisi () statemen> else i"(kondisi 6) statemen> else i"(kondisi @) statemen> . else statemen 5>

Keterangan 5
pernFataan selan8utnFa

YFarat ;^ diperi>sa dari atas >e ,a]ah. :i>a se,uah sFarat ,enar& (statemen) dia,ai>an. Fang :i>a mengi>utinFa tida> a>an di>er8a>an Fang dan Fang ["Y[ satupun sFarat ,enar&

tera>hir a>an di>er8a>an. :i>a ["Y[ tera>hir tida> ada dan tida> ada sFarat Fang ,enar& ma>a tida> ada Fang di>er8a>an.

&ontoh (:

66

#include<stdio.h> #include<conio.h> #include<math.h> main() { float !&I&$&H&V2&V-; clrscr(); printf(7Oasu>>an nilai a \7);scanf(7@f7&T!); printf(7Oasu>>an nilai , \7);scanf(7@f7&TI); printf(7Oasu>>an nilai c \7);scanf(7@f7&T$); printf(7=n7); //menghitung nilai determinan H'I3I-.3!3$; if(H'')) { V2'-I/(-3!); printf(7Hua a>ar riel >em,ar=n7); printf(7V2'V-'@f=n7&V2); } else if(H>)) { V2'(-I<s_rt(H))/(-3!); V-'(-I-s_rt(H))/(-3!); printf(7Hua a>ar riel ,erlainan=n7); printf(7V2'@f=n7&V2); printf(7V-'@f=n7&V-); } else if(H<)) { V2'-I/(-3!); V-'s_rt(-H)/(-3!); printf(7Hua a>ar riel ,erlainan=n7); printf(7V2'@f=n7&V2); printf(7V-'@f=n7&V-); } getch(); }

Iika program diatas di%alankan : !asukkan nilai a LB !asukkan nilai b LB !asukkan nilai c L( Dua akar riel kembar 3(Q36Q#..G..... &ontoh 6 :
#include<stdio.h> main() { int >d; printf(7masu>>an >ode hari57);

6@

scanf(7@d7&T>d); if(>d'')) printf(7minggu=n7); else if(>d''2) printf(7senin=n7); else if(>d''-) printf(7selasa=n7); else if(>d''D) printf(7ra,u=n7); getch();

7atihan 1.6
#include<stdio.h> main() { int no_menu; clrscr(); printf(7=n Oenu ?estaurant V+ Set ;ndonesia7); printf(7=n''''''''''''''''''''''''''''7); printf(7=n2. Sasi 9oreng ;nformati>a7); printf(7=n-. Sasi Yoto !Fam ;nternet7); printf(7=nD. 9ado-gado His>et7); printf(7=n.. Iu,ur !Fam "!S7); printf(7=n''''''''''''''''''''''''''''7); printf(7=n=nOasu>>an 4ilihan !nda... 57);scanf(7@d7&Tno_menu); if (no_menu''2) printf(7=n4ilihan So.2 Sasi 9oreng ;nformati>a ?p./.)))&-7); else if (no_menu''-) printf(7=n4ilihan So.- Sasi Yoto !Fam ;nternet ?p.1.)))&-7); else if (no_menu''D) printf(7=n4ilihan So.D 9ado-gado His>et ?p.../))&-7); else if (no_menu''.) printf(7=n4ilihan So.. Iu,ur !Fam "!S ?p.../))&-7); else printf(7=n4ilihan !nda tida> terdaftar pada menu...R7); getch(); } Hasi%

Oenu ?estaurant V+ Set ;ndonesia ''''''''''''''''''''''''''''''''''''' 2. Sasi 9oreng ;nformati>a ?p. /.)))&-. Sasi Yoto !Fam ;nternet ?p. 1.)))&D. 9ado-gado His>et ?p. ../))&.. Iu,ur !Fam "!S ?p. ..)))&''''''''''''''''''''''''''''''''''''' Oasu>>an 4ilihan !nda... 52 4ilihan So.2 Sasi 9oreng ;nformati>a ?p./.)))&-

E. Statemen S:it'h Pernyataan s:it'h adalah pernyataan yang digunakan untuk men%alankan salah satu pernyataan dari beberapa kemungkinan pernyataan, berdasarkan nilai dari sebuah 6B

ungkapan dan nilai penyeleksi. 4tau digunakan untuk pengambilan keputusan berganda dengan mengu%i ungkapan bernilai bulat. Sintak dari statemen s9itch adalah sebagai berikut : s9itch(kondisi)7 case konstanta(: statemen#statemen> break> case konstata6: statemen#statemen> break> . . de"ault: statemen#statemen> 8 Keterangan : ungkapan, pada pernyataan s:it'h dapat berupa sebuah ungkapan, konstanta atau Cariabel. ungkapan_1, ungkapan_ sampai dengan ungkapan_n , dapat berupa sembarang konstanta atau Cariabel bertipe int dan 'har. Pencocokan ungkapan dengan ungkapan_1, ungkapan_ sampai dengan ungkapan_n dapat dilakukan secara berurutan, dimulai dari yang pertama. Sekiranya cocok, pernyataan yang mengikuti 'ase bersangkutan akan di%alankan. Kalau selan%utnya pernyataan #rea% ditemukan, eksekusi dari pernyataan s:it'h berakhir. Pengunaan pernyataan #rea%. Pernyataan #rea% digunakan untuk memaksa proses untuk keluar dari suatu pernyataan ( memotong proses iterasi pada kalang ).

"ontoh 13
#include<stdio.h> #include<conio.h> main() { int 4ilih; float Yisi& :ari& Ainggi; clrscr(); printf(7<<O[SP>>=n7); printf(7=n7);

6G

printf(72. Oenghitung ;si Mu,us=n7); printf(7-. Oenghitung "uas "ing>aran=n7); printf(7D. Oenghitung ;si Yilinder=n7); printf(7=n7); printf(74ilih Somor(2-D) \7); scanf(7@d7&T4ilih); printf(7=n7); s]itch(4ilih){ case 25 printf(74an8ang sisi Mu,us \7); scanf(7@f7&TYisi); printf(7;si Mu,us'@f=n7&Yisi3Yisi3Yisi); ,rea>; case -5 printf(7:ari-8ari "ing>aran \7); scanf(7@f7&T:ari); printf(7"uas "ing>aran'@f=n7&D.2.3:ari3:ari); ,rea>; case D5 printf(7:ari-:ari "ing>aran \7); scanf(7@f7&T:ari); printf(7Ainggi Yilinder \7); scanf(7@f7&TAinggi); printf(7;si Yilinder'@f=n7&D.2.3:ari3:ari3Ainggi); ,rea>; } getch(); } asil dari program diatas <<O[SP>> 2. Oenghitung ;si Mu,us -. Oenghitung "uas "ing>aran D. Oenghitung ;si Yilinder 4ilih Somor(2-D) \D :ari-:ari "ing>aran \Ainggi Yilinder \. ;si Yilinder'/).-.))))

"ontoh 3
#include<stdio.h> main(){ int >d; printf(7masu>>an >ode hari57); scanf(7@d7&T>d); s]itch(>d) { case )5 printf(7minggu=n7); ,rea>; case 25

6,

printf(7senin=n7); ,rea>; case -5 printf(7selasa=n7); ,rea>; default5 printf(7,u>an hari=n7); } }

7atihan 1.;
#include<stdio.h> main() { int >elas; float harga&pa8a>; clrscr(); printf(7=n arga Iarang s]itch (>elas) { case 2 5 printf(7=n=n:enis Iarang 5 Oa>anan7); printf(7=n arga Iarang 5 ?p. @E.-f7&harga); pa8a> ' ).2 3 harga; printf(7=n4a8a> ,rea>; case - 5 printf(7=n=n:enis Iarang 5 4a>aian& Yepatu7); printf(7=n arga Iarang 5 ?p. @E.-f7&harga); pa8a> ' ).2/ 3 harga; printf(7=n4a8a> ,rea>; case D 5 printf(7=n=n:enis Iarang 5 Oesin-mesin7); printf(7=n arga Iarang 5 ?p. @E.-f7&harga); pa8a> ' ).21/ 3 harga; printf(7=n4a8a> ,rea>; default 5 printf(7=n=n4ilihan Melas salah...R7); } 5 ?p. @E.-f7&pa8a>); 5 ?p. @E.-f7&pa8a>); 5 ?p. @E.-f7&pa8a>); 5 ?p. 7); scanf(7@f7&Tharga); printf(7=nOasu>>an :enis Melas (2-.) 5 7); scanf(7@d7&T>elas);

6-

getch(); } asil 5 arga Iarang 5 ?p. /))))

Oasu>>an :enis Melas (2-.) 5 :enis Iarang 5 4a>aian& Yepatu arga Iarang 5 ?p. /)))).)) 4a8a> 5 ?p. 1/)).))

Aampil>an

)-GAS (. Buatlah Struktur program hari dengan ketentuan input kode hari (#-, ( untuk kode hari S02/2, 6 untuk kode hari S0'4S4, @ untuk kode hari *4B), B untuk kode hari K4!/S, G untuk kode hari I)!V4$, , untuk kode hari S4B$) dan - untuk kode hari !/2[[). Iika kode yang diinput tidak dikenal maka, proses program akan berhenti dan akan menampilkan dilayar berupa (Kode yang 4nda masukkan salah).

6E

BAB , PER-7ANGAN

Pen!elasan

<perasi perulangan selalu di%umpai didalam bahasa pemrograman, disini akan dibahasa beberapa perintah perulangan diantaranya.

6.1 Stru%tur Perulangan <hile Perulangan \;/'0 banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila %umlah perulangannya belum diketahui. Proses perulangan akan terus berlan%ut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah. Pernyataan \hile
Yinta> ]hile(>ondisi) pernFataan; Yelama >ondisi ,enar ma>a pernFataan di>er8a>an :i>a >ondisi salah >eluar loop

6+

Proses perulangan akan dilakukan %ika kondisi yang diseleksi di statemen 9hile masih bernilai benar, dan perulangan akan dihentikan %ika kondisinya sudah bernilai salah. "ontoh3
/3 4rogram 4erulangan mengguna>an ]hile 3/ #include :stdio.h: #include :conio.h: 0oid main() { int G; G ' 2; /3 a]al 0aria,el 3/ ]hile (G <' 2)) /3 Iatas a>hir perulangan 3/ { printf(:@d I! !Y! $=n:& G); G <<; /3 0aria,el G ditam,ah dengan 2 3/ } getch(); } :i>a program terse,ut di8alan>an ma>a a>an menghasil>an hasil se,agai ,eri>ut5 2I! !Y! $ -I! !Y! $ DI! !Y! $ .I! !Y! $ /I! !Y! $ EI! !Y! $ 1I! !Y! $ XI! !Y! $ (I! !Y! $ 2)I! !Y! $

7atihan 6.1 3
#include<stdio.h> #include<conio.h> #include<math.h> main() { int i; clrscr(); printf(7333 A!I[" Y;SPY H!S $#Y;SPY H!"!O Y!AP!S H[?!:!A 333=n7); printf(7@/s@2-s@2-s=n7&7 V7&7 Yinus(V)7&7 $osinus(V)7); printf(7@/s@2-s@2-s=n7&7----7&7---------7&7-----------7); i'); ]hile(i<'DE)) { printf(7@Dd @22./f @22./f=n7&i&sin(i//1.-(/X)&cos(i//1.-(/X)); i<'D); }

@.

getch(); } asil 5 333 A!I[" Y;SPY H!S $#Y;SPY H!"!O Y!AP!S H[?!:!A 333 V Yinus(V) $osinus(V) ------------ ----------) ).))))) 2.))))) D) )./)))) ).XEE)D E) ).XEE)D )./)))) () 2.))))) ).))))) 2-) ).XEE)D -)./)))) 2/) )./)))) -).XEE)2X) ).))))) -2.))))) -2) -)./)))) -).XEE)D -.) -).XEE)-)./)))) -1) -2.))))) -).))))) D)) -).XEE)D )./)))) DD) -)./)))) ).XEE)DE) -).))))) 2.)))))

6.

Statemen do(:hile Pada dasarnya struktur perulangan do....9hile sama sa%a dengan struktur 9hile,

hanya sa%a pada proses perulangan dengan 9hile, seleksi berada di 9hile yang letaknya di atas sementara pada perulangan do....9hile, seleksi 9hile berada di ba9ah batas perulangan. Karakteristik do ... 9hile() adalah: (. Perulangan akan dilakukan minimal (5 terlebih dahulu, kemudian baru dilakukan pengecekan terhadap kondisi, %ika kondisi #enar maka perulangan masih akan tetap dilakukan. 6. Perulangan dengan do...9hile() akan dilakukan sampai kondisi false.

Bentuk umum dari perulangan ini adalah :


do { pernFataan Fang a>an di8alan>an } ]hile (>ondisi)

Perbedaan utama antara statemen do 9hile dengan statemen 9hile adalah letak kondisi yang akan diseleksinya. )ntuk 9hile kondisi yang diseleksi terletak di a9al lingkup perulangan 9hile, kondisinya harus benar dahulu.
benar kondisi pernyataan

@(
salah end

&ontoh:
#include Zstdio.hZ #include Zconio.hZ 0oid main() { int G; G ' 2; do { printf(Z@d I! !Y! $=nZ& G); G <<; } ]hile(G <' 2)); getch(); }

7atihan 6.
#include 7stdio.h7 #include 7conio.h7 main () { /3 Mamus 5 3/ int S; int i; /3 4rogram 3/ printf (7Silai S >) ' 7); /3 ;nisialisasi 3/ scanf (7@d7& TS); i ' 2; /3 ^irst [lmt 3/ printf (74rint i dengan ?[4[!A5 =n7); do { printf (7@d =n7& i); /3 4roses 3/ i<<; /3 SeGt [lmt 3/ } ]hile (i <' S); /3 Mondisi pengulangan 3/ printf (7!>hir program =n7); getch(); clrscr(); }

7atihan 6./ 3
#include <stdio.h> #include <conio.h>

@6

#include <math.h> main() { int i&G; printf(7 V 2/V V`V`D=n7); printf(7---------------------------=n7); G'2; do { printf(7@/d @X./f7&G&2.)/G); i'-; do { printf(7@X.)f7&po](G&i)); i<<; } ]hile(i<'D); printf(7=n7); G<<; }]hile(G<'2)); getch(); } asil 5 V 2/V V`V`D ----------------------------2 2.))))) 2 2 - )./)))) . X D ).DDDDD ( -1 . ).-/))) 2E E. / ).-)))) -/ 2-/ E ).2EEE1 DE -2E 1 ).2.-XE .( D.D X ).2-/)) E. /2( ).22222 X2 1-( 2) ).2)))) 2)) 2)))

6./. Statemen for Struktur perulangan "or biasa digunakan untuk mengulang suatu proses yang telah diketahui %umlah perulangannya. Dari segi penulisannya, struktur perulangan "or tampaknya lebih e"isien karena susunannya lebih simpel dan sederhana. Bentuk umum perulangan "or adalah sebagai berikut :
for(ung!apan1, ung!apan2, ung!apan-) pern.ataan,

atau "or(49al>4khir>Peningkatan)statemen>

@@

Keterangan : 49al adalah suatu ungkapan yang memeberikan nilai a9al suatu Cariabel untuk perulangannya (misal iQ.). 4khir adalah suatu ungkapan yang menun%ukkan suatu kondisi yang harus dipenuhi supaya perulangan masih dapat terus dilakukan (misalnya iWQ6. berarti perulangan akan tetap terus dilakukan selama nilai Cariabel i masih lebih kecil atau sama dengan 6.). Peningkatan adalah suatu ungkapan yang merubah nilai#nilai Cariabel pengontrol perulangan seetiap saat perulangan dilakukan (misal iDD berarti nilai i ditambah dengan ( setiap saat perulangan dilakukan) &ontoh (:
#include <stdio.h> main(){ int ,il; for(,il'2); ,il<'2));,il<' 2)) printf(7@d=n7& ,il); } bil Q (.

salah bil WQ(..

benar

&etak bil

bil Q bil D (.

&ontoh 6:
#include<stdio.h> #include<conio.h> main() { int i; clrscr(); for(i');i<'/;i<<) printf(7selamat pagi ;ndonesia=n7); getch(); } :i>a program ini di8alan>an 5 selamat selamat selamat selamat selamat pagi pagi pagi pagi pagi ;ndonesia ;ndonesia ;ndonesia ;ndonesia ;ndonesia

@B

selamat pagi ;ndonesia

Berikut ini akan diberikan beberapa contoh prulangan dengan statemen "or dan Cariasinya. (. Perulangan Positi" !erupakan perulangan yang peningkatannya positi" untuk Cariabel pengontrol perulangannya (misal iDD) &ontoh ( :
#include<stdio.h> main() { int i; for(i'--;i<'D;i<<)printf(7@d=n7&i); }

Keterangan : Program diatas Cariabel i dimulai dari #6 dan perulangan dihentikan setelah nilai @ dengan peningkatan nilai (, sehingga Cariabel akan bernilai #6,#(,.,(,6, dan @. &ontoh 6 :
#include<stdio.h> main() { int i; for(i');i<'2);i<'D)printf(7@d=n7&i); }

Keterangan : Program diatas dimulai dari iQ. dan diakhiri nilai iWQ(. dengan peningkatan @ 6. Perulangan 2egatip &ontoh :

#include<stdio.h> main() { int i; for(i'/;i<');i--)printf(7@d=n7&i); }

@. Perulangan dengan Blok Statemen Perulangan dengan blok statemen memungkinkan se%umlah statemen di dalam blok diproses berulang#ulang. &ontoh :
#include<stdio.h> #include<conio.h> main() { int i&n;

@G

float G&rata&total'); clrscr(); //menanFa>an ,anFa> dari data printf(7IanFa>nFa Hata \7); scanf(7@d7&Tn); printf(7=n7); //memasu>>an masing-masing data dari nilai i'2 >e i'n for(i'2;i<'n;i<<) { printf(7Hata >e @Dd \7&i); scanf(7@f7&TG); total'total<G; rata'total/n; printf(7=n7); printf(7IanFa>nFa Hata '@Dd=n7&n); printf(7Aotal Silai Hata '@f=n7&total); printf(7?ata-rata Silai Hata '@f=n7&rata); getch();

Iika program ini di%alankan :


IanFa>nFa Hata \D Hata >e Hata >e Hata >e 2 \- \D D \D

IanFa>nFa Hata ' D Aotal Silai Hata 'X.)))))) ?ata-rata Silai Hata '-.EEEEE1

Keterangan : Banyaknya perulangan adalah sebanyak n kali dan n adalah banyaknya data. B. "or tanpa nilai a9al 2ilai a9al dari Cariabel perulangan tidak harus ada di statemen "or, tetapi dapat ditentukan sebelum statemen ini. &ontoh :
#include<stdio.h> #include<conio.h> main() {

int i; clrscr(); i'D; for(;i<'/;i<<) printf(7@d=n7&i); getch(); }

G. "or tanpa peningkatan &ontoh :

#include<stdio.h> #include<conio.h>

@,

main() { int i; clrscr(); for(i'2;i<'/;) { printf(7@d=n7&i); i<<; } getch(); }

,. Perulangan tanpa nilai a9al, akhir, dan peningkatan &ontoh :

#include<stdio.h> #include<conio.h> main() { int i; clrscr(); for(;;) printf(74erulangan tanpa ,erhenti=n7&i); getch(); }

@-

BAB ,I 0-NGSI ;.1 Dasar 0ungsi ungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. )u!uan $ema%aian fungsi 3 (. Program men%adi terstruktur, sehingga mudah dipahami dan mudah dikembangkan 6. Dapat mengurangi pengulangan kode (duplikasi kode) BEN)-K -M-M PENDEK7ARASIAN 0-NGSI 3
tipe_fungsi nama_fungsi(parameter_fungsi);

BEN)-K -M-M PENDE0INISIAN 0-NGSI 3


Aipe_fungsi nama_fungsi(parameter_fungsi) { statement statement aaa... aaa... }

Beberapa ungsi Pustaka Dalam Bahasa & ungsi <perasi String (tersimpan dalam header "ile :string.h=) (. strlen() A A 6. Ber"ungsi untuk memperoleh %umlah karakter dari suatu string. Bentuk umum : strlen(string)>

strcat()

@E

A A A A A A A A &ontoh :

Digunakan untuk menambahkan string sumber ke bagian akhir dari string tu%uan. Bentuk umum : strcat(tu%uan, sumber)> strupr() Digunakan untuk mengubah setiap huru" dari suatu string men%adi huru" capital. Bentuk umum : strupr(string)> strl9r() Digunakan untuk mengubah setiap huru" dari suatu string men%adi huru" kecil semua. Bentuk umum : strl9r(string)>

#include 7stdio.h7 #include 7conio.h7 #include 7string.h7 0oid main() { char namaK-/L; strcpF(nama& 7Ouhammad ?osFid !l fara,i7); printf(7=nSama 5 @s7& nama); printf(7=nIanFa>nFa >ara>ter nama !nda adalah 5 @i7& strlen(nama)); getch(); clrscr(); }

7atihan ;.1
#include 7stdio.h7 #include 7conio.h7 #include 7string.h7 0oid main() { char satuKD)L ' 7^a>ultas Ae>ni>7; char duaKD)L ' 7Pni0ersitas ;slam !ttahiriFah7; clrscr(); strcat(satu& dua); printf(7 asil pengga,ungannFa 5 @s=n7& satu); printf(7=n:i>a diu,ah men8adi huruf >apital semua 5=n7); printf(7@s7& strupr(satu)); printf(7=n:i>a diu,ah men8adi huruf >ecil semua 5=n7); printf(7@s7& strl]r(satu));

@+

getch(); clrscr(); }

BAB ,II ARRA* =.1 Dasar Arra2 4rray adalah kumpulan dari nilai#nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. 2ilai#nilai data di suatu array disebut dengan elemen#elemen array. 'etak urutan dari elemen#elemen array ditun%ukkan oleh suatu subscript atau indeks =. . Arra2 Dimensi Satu a. b. c. Setiap elemen array dapat diakses melalui indeks. /ndeks 4rray dimulai dari . Deklarasi 4rray Bentuk )mum:
Aipe_arraF_nama_arraFKu>uranL; $ontoh5 SilaiK)L int SilaiK/L; 1) SilaiK2L X) SilaiK-L XE) SilaiKDL 1/ SilaiK.L

&ontoh:
#include 7stdio.h7 #include 7conio.h7 0oid main() { int indeG; int nilaiK2)L;

B.

printf(7;nput nilai 2) mahasis]a 5 7); for(indeG'); indeG < 2); indeG<<) { printf(7=nOahasis]a @i 5 7& indeG<2); scanf(7@i7& TnilaiKindeGL); } printf(7Silai mahasis]a Fang telah diinput7); for(indeG'); indeG < 2); indeG<<) { printf(7=n@/.)i7& nilaiKindeGL); } getch(); clrscr(); }

7atihan =.1 3
/3 ^ile program 5 !rraF Ytring 3/ #include <stdio.h> 0oid main() { int i&8; char hariKLK2)L ' { 7Oinggu7& 7Yenin7& 7Yelasa7& 7?a,u7& 7Mamis7& 7Ya,tu7 }; /3 Aampil>an data3/ for (i');i<1;i<<) printf (7@s=n7& hariKiL); getch(); clrscr(); } 7:umat7&

B(

7atihan=.
/3 latihan arraF statis 5 mengisi dg assignment& menulis 3/ #include <stdio.h> main () { /3 Mamus 3/ int i; int ta,K/L; /3 $ara mengacu elemen >e-i5 ta,KiL 3/ int S; /3 4rogram 3/ S ' /; printf (7;si dan print ta,el untu> inde>s 2 - / =n7); /3 isi dengan assignment 3/ for (i ' 2; i <' S; i<<) { ta,KiL ' i; }; /3 tra0ersal5 print 3/ for (i ' 2; i <' S; i<<) { printf (7i'@d ta,KiL'@d =n7& i& ta,KiL); }; getch(); clrscr(); }

=./ Arra2 Dimensi Dua 4rray dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel. Deklarasi array : $ipeTarray namaTarray]baris^]kolom^> &ontoh :

B6

/nt 3]@^]B^> &ontoh :


#include <stdio.h> 0oid main() { int ,aris&>olom; int ,ilKDLK/L ' { {2& -& D/& 1& 2)}& {E& 1& .& 2& )}& {-&.&X&2)&2-} }; for(,aris ' ); ,aris < D; ,aris<< ) for(>olom ' ); >olom < /; >olom<< ) printf(7Hata K@d&@dL ' @d=n7&,aris& >olom& ,ilK,arisLK>olomL); getch(); clrscr(); }

;asil . ( , 6 ( 6 B 6 @G B E @ ( (. B (. . (6

. ( 6

=.1 Arra2 Multi Dimensi Bahasa & mengi%inkan array dengan beberapa dimensi, contoh array 6 dimensi. 4rray 6 dimensi adalah sebuah da"tar yang terdiri atas array#array ( dimensi. !isalnya kita akan membuat array 6 dimensi dengan ukuran @5G, bertipe int, maka deklarasinya adalah : int a!"# !$#%
Deklarasi array pada bahasa & tidak sama dengan bahasa#bahasa lain. Biasanya setiap dimensi dipisahkan oleh tanda koma, tetapi bahasa & meletakan setiap dimensi di dalam kurung siku. &ontoh :
main() {

B@

int i&8; int ,KDL K/L; clrscr(); for(i'2; i<'D; i<<) { for(8'2; 8<'/; 8<<) { ,KiL K8L ' i38; printf(7@Dd7& ,KiL K8L); } printf(7=n7); } getch(); }

4rray 6 dimensi disimpan di dalam matriks yang tersusun men%adi baris dan kolom. /nde5 pertama menun%ukkan barisnya dan inde5 kedua menun%ukkan kolomnya. )kuran array di dalam memori yaitu : total byte & baris ' kolom ' ukuran dari tipe . )ntuk array di atas total byte Q @PGP6 Q @. byte =.6 ARRA* S)RING 4rray string sama dengan array karakter 6 dimensi. /ndeks pertama menun%ukkan banyaknya string dan indeks kedua menun%ukkan pan%ang maksimum string. &ontoh : c(ar nama!1)# ! $# nama terdiri dari (. elemen dengan pan%ang maksimum 6G karakter. )ntuk membaca data string, 4nda dapat memakai "ungsi gets*)+ !isalnya, 4nda ingin membaca nama ketiga, maka gets(nama]@^)> &ontoh :
main() { char namaK2)L K-/L; float nilaiK2)L& 8umlah& rata; int data&i; clrscr(); printf(7IanFa>nFa data 5 7); scanf(7@d7&Tdata); for (i'2; i<'data; i<<) { printf(7Sama Oahasis]a 5 7); scanf(7@s7&TnamaKiL); printf(7Silai 5 7); scanf(7@f7&TnilaiKiL); 8umlah <' nilaiKiL; } clrscr(); printf(7=nHaftar Silai P8ian Iahasa $7); printf(7=n''''''''''''''''''''''''''''''''''7); printf(7=nSama Oahasis]a Silai7); printf(7=n''''''''''''''''''''''''''''''''''7); for (i'2; i<'data; i<<)

BB

{ printf(7=n @--/s @/.2f7& namaKiL& nilaiKiL); } printf(7=n''''''''''''''''''''''''''''''''''7); rata' 8umlah / data; printf(7=n?ata-rata adalah @/.-f 7& rata); getch(); }

=.; INISIA7ISASI ARRA* Bentuk umum : tipe nama_array !ukuran1, ukuran , ,, ukuran n# & -da.tar nilai/% Da"tar nilai berisi konstanta yang sesuai dengan tipe array. Setiap konstanta dipisahkan oleh tanda koma. Konstanta pertama akan mengisi elemen pertama, konstanta kedua untuk elemen kedua dan seterusnya. !isal : int i!1)# & -1 ,0$,12,"0, ,$,1),2,13, 1/% BAB ,III S)RING >.1 Dasar String

String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks. !isalnya untuk menampung (menyimpan) suatu kalimat. String adalah kumpulan dari nilai#nilai karakter yang berurutan dalam bentuk array berdimensi satu. >. Konstanta String Konstanta string ditulis dengan dia9ali dan diakhiri tanda petik ganda C :4B&D0= Komposisi penyimpanan string dalam memori

&

0 _.

Setiap karakter akan menempati memori sebesar ( byte Byte terakhir otomatis akan berisi karakter 2)'' (_.) >./ ,aria#el String Hariabel string adalah Cariabel yang dipakai utuk menyimpan nilai string
C char nameK2/L;

mendeklarasikan Cariabel string dengan pan%ang maksimal (G karakter (termasuk karakter 2)'') BG

Deklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe c(ar >.1 Inisialisasi String Suatu Cariabel string dapat diinisialisasi dengan elemen terakhirnya berupa karakter 2)'' C char name]^Q7`*`,V/`,`2`,`/`,V_.V8> C char name]^ Q :*/2/=>

penugasan suatu string ke Cariabel string seperti ini tidak diperkenankan C name Q :*/2/=> >.6 In$ut Out$ut Data String gets(namaTarray)> scan"(:Ms=, namaTarray)> nama?arra2 adalah Cariabel bertipe array o. c(ar yang akan digunakan untuk menyimpan string masukan Di depan nama?arra2 tidak perlu ada operator & (operator alamat), karena nama?arra2 tanpa kurung siku sudah menyatakan alamat yang ditempati oleh elemen pertama dari array tsb &ontoh:
#include <stdio.h> main() { char nameK2/L; printf(7Oasu>>an nama !nda 5 7); gets(name); printf(7=n alo& @s. } Yelamat ,ela8ar string.=n7& name);

>.; Menam$il%an Isi ,aria#el String puts(CarTstring)> print"(ZMsZ,CarTstring)> Dalam hal ini @ar?string adalah sebuah Cariabel yang berupa sebuah array o. c(ar

B,

ungsi puts*) akan menampilkan isi dari @ar?string dan secara otomatis menambahkan karakter `_n` di akhir string

Sedangkan "ungsi print.*) akan menampilkan isi Cariabel string tanpa memberikan tambahan `_n` >.= Menga%ses Elemen String Hariabel string merupakan bentuk khusus dari array bertipe c(ar 0lemen dari Cariabel string dapat diakses seperti halnya pengaksesan elemen pada array &ontoh:
#include <stdio.h> #define O!MY -/E main() { int i& 8um>ar ' ); char te>sKO!MYL; puts(7Oasu>>an suatu >alimat (ma>s -// >ara>ter).7); puts(7YaFa a>an menghitung 8umlah >ara>ternFa.=n7); fgets(te>s& siQeof te>s& stdin); //masu>an dr >eF,oard for(i'); te>sKiL; i<<) 8um>ar<<; printf(7=n:umlah >ara>ter ' @d=n7& 8um>ar); }

7atihan >.1
#include <stdio.h> #define O!MY D) main(){ int i; char asalKL ' YaFa menFu>ai ,ahasa $%; char hasilKO!MYL; i'); ]hile (asalKiL R' *=)+){ hasilKiL ' asalKiL; i<<; } hasilKiL ' *=)+; /3 ,eri >ara>ter SP"" 3/ printf(;si hasil 5 @s=n%& hasil); }

B-

>.> 0ungsi(0ungsi Mengenai String ungsi strcpy*) untuk !enyalin 2ilai String ungsi strlen*) untuk !engetahui Pan%ang 2ilai String ungsi strcat*) untuk !enggabung 2ilai String ungsi strcmp*) untuk !embandingkan Dua 2ilai String ungsi strc(r*) untuk !encari 2ilai Karakter dalam String

BAB IA POIN)ER B.1 Konse$ Dasar Pointer

Hariabel pointer sering dikatakan sebagai Cariabel yang menun%uk ke obyek lain. Hariabel pointer berisi alamat dari suatu obyek lain. Sebagai contoh, p5 adalah Cariabel pointer dan 5 adalah Cariabel yang ditun%uk oleh p5. Kalau 5 berada pada alamat memori (alamat a9al) (..., maka p5 akan berisi (...
,aria#el $ointer $C menun!u% %e @aria#el C

SSSS

(...

p5

address

pG ' TG;

L (... 5

Mende%larasi%an ,aria#el Pointer

BE

Bentuk )mum:
tipe PnamaTCariabel

&ontoh :
int 3pG;

Mengatur Pointer agar Menun!u% %e ,aria#el 7ain


pG ' TG;

Menga%ses Isi Suatu ,aria#el Melalui Pointer


F ' 3pG;

"ontoh3
#include <stdio.h> main() { int F& G ' X1; int 3pG; pG ' TG; F ' 3pG; printf(7!lamat G ' @p=n7& TG); printf(7;si pG ' @p=n7& pG); printf(7;si G ' @d=n7& G); printf(7Silai pG ' @d=n7& 3pG); printf(7Silai F ' @d=n7& F); } !lamat G ;si pG ;si G Silai pG Silai F ' ' ' ' ' ))2-^^1X ))2-^^1X X1 X1 X1

Analisa Pada $rogram di atas. dua $ern2ataan

pG ' TG; F ' 3pG;


se#enarn2a da$at diganti%an dengan se#uah $ern2ataan #eru$a

F ' G;
Seandain2a $ada $rogram di atas tida% terda$at $ern2ataan

pG ' TG;

B+

namun terda$at $ern2ataan

F ' 3pG;
menga%i#at%an %om$uter tida% da$at di%endali%an (hang).

"ontoh Menga%ses dan Mengu#ah isi Suatu ,aria#el Pointer


#include <stdio.h> main() { float d ' /../f& 3pd; printf(7;si d mula-mula ' @g=n7& d); pd ' Td; 3pd <' 2); printf(7;si d se>arang ' @g=n7& d); } ;si d mula-mula ;si d se>arang ' /../ ' E../

B. . O$erasi Pada Pointer <perasi aritmatika pada pointer hanya ada 6, yaitu penambahan dan pengurangan. &ontoh :
main() { int a& 3p2& 3p-; clrscr(); a'/; p2'Ta; printf(7=n ;si p2 p2<<; printf(7=n ;si p2 p-'Ta; printf(7=n ;si pp- --; printf(7=n ;si pp- ' p- < /; printf(7=n ;si pgetch(); } asil 5 ;si p2 se,elum ;si p2 sesudah ;si p- se,elum ;si p- sesudah ;si p- sesudah

se,elum ditam,ah adalah @/u7& p2); sesudah ditam,ah adalah @/u7& p2); se,elum di>urangi adalah @/u7& p-); sesudah di>urangi adalah @/u7& p-); sesudah ditam,ah dengan / adalah @/u7& p-);

ditam,ah adalah E/.(. ditam,ah adalah E/.(E di>urangi adalah E/.(. di>urangi adalah E/.(ditam,ah dengan / adalah E//)-

Keterangan :
6aria,el a ,ertipe int& 0aria,el p1 dan p2 adalah pointer Fang menun8u> >e 0aria,el int 4ernFataan p1 // menFe,a,>an p1 ,ertam,ah dengan 2 se,a, 0aria,el integer ,eru>uran 2 0.te 8uga dengan p2++ a>an ,er>urang 2

G.

4ernFataan p21p2/2 menun8u> >e 2 elemen ,eri>utnFa sesuai dengan tipe int

POIN)ER DAN ARRA* &ontoh : c(ar nama! )#, 'p1% p1&nama%

Hariabel $1 berisi alamat dari elemen pertama dari Cariabel nama. Didalam bahasa &, nama array tanpa inde5 sama dengan alamat dari a9al array. Pernyataan $1Dnama sama dengan $1DEnamaF1G Pernyataan p6Qstr]B^ artinya p6 akan menun%uk elemen ke empat dari nama, cara lainnya adalah : p(Qnama> p6QP(p(DB)> 4rray dapat ditun%uk dengan inde5#nya dan dengan alamat. Penun%ukan dengan alamat akan lebih cepat daripada penun%ukan dengan inde5#nya. Biasanya program & lebih mementingkan kecepatan sehingga dipilih penggunaan alamat. &ontoh :
FP menggunakan inde5 array PF main() 7 char str]E.^> int i> clrscr()> print"(Z!asukkan string dalam huru" besar : Z)> gets(str)> print"(ZString dalam huru" kecil : Z)> "or(iQ.> str]i^> iDD) print"(ZMcZ,tolo9er(str]i^))> getch()> 8 FP menggunakan pointer PF ?include Wstdio.hY ?include Wctype.hY main() 7 char str]E.^, Pp> clrscr()> print"(Z!asukkan string dalam huru" besar : Z)> gets(str)> print"(ZString dalam huru" kecil : Z)> pQstr> 9hile (Pp) print"(ZMcZ,tolo9er(PpDD))> getch()> 8 POIN)ER DAN S)RING

G(

2ama array tanpa inde5 adalah pointer ke elemen pertama dari array. ungsi string yang mempunyai parameter berupa string hanya mengirimkan alamatnya bukan stringnya sendiri. &ontoh :
#include <stdio.h> main() { char sKX)L; char 3p; int i; clrscr(); printf(7Oasu>>an dua ,uah >alimat 5 7); gets(s); for (i'); sKiL TT sKiL R' J.J; i<<); p'TsKi<2L; printf(7Malimat >eduanFa adalah 5 =n7); printf(p); getch(); }

Keterangan :
4ada pengulangan ^#? a>an ,erhenti 8i>a pada string terse,ut ditemu>an >ara>ter titi> atau null 4ernFataan p'TsKi<2L& a>an menun8u> >e >ara>ter sesudah titi> atau null. OisalnFa >ara>ter >elima adalah titi>& ma>a p a>an menun8u> >e >ara>ter >e enam. 4ernFataan terse,ut dapat diganti dengan p'TsKiL<2

ARRA* POIN)ER Pernyataan int HCF1IG mendeklarasikan array 5 yang berisi pointer integer. )ntuk mengisi elemen keempat dengan alamat dari Cariabel a yang bertipe int, pakailah : CF1G DEa, sedangkan untuk memperoleh isi Cariabel a adalah : HCF1G
&ontoh : main() 7 char Pmenu]^ Q 7 Z2asi [oreng D $elur !ata Sapi_nZ, ZBistik 4yam_nZ, ZSoto 4yam !adura_nZ, Z[ado#gado_nZ 8> int noTmenu> clrscr()> print"(Z!asukkan menu pilihan 4nda ((#B) : Z)> scan"(ZMdZ,OnoTmenu)> print"(Z_n!enu yang 4nda minta adalah : _nZ)> print"(ZMsZ,menu]noTmenu#(^)> getch()> 8

G6

DA0)AR P-S)AKA 4chmad Solihin, : Pemrograman Bahasa & dengan $urbo &=, http:FF999./lmu komputer.com, 6..@.
&erianto' ( Presentasi )ahasa C *' http+,,herianto.-iles..ordpress.com,/001,02,presentasi%c.ppt' /001.

/nggriani 'iem, :&ontoh Program Kecil Dalam Bahasa &=, /nstitut $eknologi Bandung, 6..@.

G@

GB