Laporan Praktikum Aplikasi Pemprograman Bahasa C
\
Hendri.Setiawan T.Elektro B 151!"11!5#
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS AKULTAS TEKNIK TEKN IK UNIVERSITAS SINGAPERBANGSA KARAWANG TAHUN 2017 2 017
ALGORITMA DAN FLOWCHART
1.1 TUJUAN 1. $ampu memahami persoalan 2. $endesain pen%elesaian persoalan ke dalam algoritma 3. $enotasikan algoritma %ang sudah di&uat menggunakan menggunakan notasi flowchart notasi flowchart
1.2 TEORI DA DASAR Be&erapa langkah dalam proses pem&uatan suatu program atau so'tware ( 1. Mende!n!"!#$n M$"$%$& d$n Men'$n$%!"$n($
Langkah awal %ang harus dilakukan adalah mengidenti'ikasikan masalah antara lain tu)uan dari pem&uatan program* parameter+parameter %ang digunakan* 'asilitas apa sa)a %ang akan disediakan oleh program. ,emudian menentukan ap a %ang akan diterapkan untuk men%elesaikan masalah metode atau algoritma apa
terse&ut dan terakhir menentukan &ahasa program pem&uatan program. Me)e$%!"$"!#$n den'$n %$n'#$&*%$n'#$& +e)!#,2. Me)e$%!"$"!#$n
%ang digunakan untuk
A%')!-/$
Algoritma adalah urutan langkah+langkah logika %ang men%atakan suatu tugas dalam men%elesaikan suatu masalah atau pro&lem. Contoh ( Buat Buatla lah h
algo algori ritm tmaa untu ntuk menen enentu tuk kan apak apakah ah suat suatu u &ila &ilan ngan gan meru erupakan akan &ilangan
gan)il atau &ilangan genap. Algoritman%a ( 1. $asukka $asukkan n se&uah se&uah &ila &ilanga ngan n sem&ar sem&arang ang -. Bagi Bagi &ilanga &ilangan n terse&u terse&utt dengan dengan &ilan &ilangan gan ". Hitung Hitung sisa hasil hasil &agi &agi pada pada lang langkah kah -. -. . Bila Bila sisa sisa hasil &agi &agi sama dengan dengan maka maka &ilangan &ilangan itu adalah adalah &ilang &ilangan an genap genap tetapi &ila sisa hasil &agi sama dengan 1 maka &ilangan itu adalah &ilangan gan)il
/ari 0ontoh algoritma di atas tentang menentukan apakah suatu &ilangan adalah &ilangan gan)il atau &ilangan genap* 'low0hart dari program adalah se&agai &erikut
1. PERCOBAAN
ntuk semua persoalan di &awah ini &uatlah programn%a 1. $enghitung luas lingkaran dan men0etak hasiln%a -.Proses pengiriman email* )ika email tidak terkirim maka akan dilakukan proses pengiriman email lagi. ".Proses melakukan panggilan telepon* )ika tidak diangkat maka dilakukan panggilan telepon lagi. . Perusahaan daerah air minum menentukan tari' ketentuan se&agai &erikut(
"
per m
air &erdasarkan
Buatlah program %ang mem&a0a )umlah pemakaian air* untuk menghitung &ia%a %ang harus di&a%ar dan menampilkan hasiln%a di la%ar 5. Buatlah program untuk men)umlahkan &ilangan 1 sampai 1* tapi %ang di)umlahkan &ilangan gan)il sa)a.
1. LAPORAN 1.5 Cetak listing program %ang anda &uat pada per0o&aan diatas 1.! Cetak keluaran setiap per0o&aan diatas untuk &e&erapa kali per0o&aan 1.# Buat kesimpulan
DASAR PROGRAM BAHASA C 2.1 TUJUAN 1. $engenal sintaks dan 'ungsi+'ungsi dasar dalam &ahasa C -. $ampu mem&uat 'low0hart untuk algoritma untuk meme0ahkan suatu masalah sederhana* selan)utn%a mengimplementasikann%a dalam &ahasa
2.2 TEORI DASAR Akar dari &ahasa C adalah &ahasa BCPL %ang dikem&angkan oleh $artin
2i0hards
pada tahun 13!#. Bahasa ini mem&erikan ide kepada ,en Thompson %ang kemudian mengem&angkan &ahasa %ang dise&ut dengan B pada tahun 13#.
Perkem&angan
selan)utn%a dari &ahasa B adalah &ahasa C oleh /ennis 2it0hie sekitar tahun 13#+an di Bell Telephone La&oratories 4n0. sekarang adalah AT6T Bell La&oratories7. Bahasa C pertama kali digunakan pada komputer /igital E8uipment
Corporation
P/P+11 %ang menggunakan sistem operasi 94:. P)"e" K/!%$"! d$n L!n#!n' P)')$/ C
Proses dari &entuk sour0e program* %aitu program %ang ditulis dalam &ahasa C hingga men)adi program %ang executable ditun)ukkan pada ;am&ar 1 di &awah ini(
Gambar 1 Proses Kompilasi Linking Program C
Praktikum Aplikasi Pemrograman Pemrograman dengan Bahasa C – Program tudi tudi !eknik !eknik "lektro #$%&A #$%&A
2- 1
S-),#-,) Pen,%!"$n P)')$/ C
Prog Progra ram m C pada pada hake hakeka katn tn%a %a ters tersus usun un ata atass se)u se)uml mlah ah &lo &lok k 'ung 'ungsi si.. Se&uah program mini minima mall meng mengan andu dung ng se&u se&uah ah 'ung 'ungsi si..
%ang %ang haru haruss ada ada dala dalam m
C dan sudah ditentukan naman%a adalah main7. Setiap 'ungsi terdiri atas satu atau &e&erapa pern%ataan* %ang se0ara keseluruhan dimaksudkan dimaksudkan untuk melaksanakan tugas khusus. Bagian pern%ataan 'ungsi sering dise&ut tu&uh 'ungsi7 diawali dengan tanda kurung kurawal &uka =7 dan diakhiri dengan tanda kurung kurawal tutup >7. /i antara kurung kurung kurawal kurawal itu dapat dapat dituliskan dituliskan statemen+st statemen+statemen atemen progra program m C. 9amun pada
ken%ataann%a* suatu 'ungsi &isa sa)a tidak mengandung pern%ataan sama sekali.
?alaupun 'ungsi tidak memiliki pern%ataan* kurung kurawal haruslah tetap ada. Se&a Se&a& &
kuru kurung ng kur kuraw awal al men mengi gis% s%ara aratk tkan an awa awall dan akhir de'inisi 'ungsi. Berikut ini
adalah struktur dari program C
Pemrograman dengan &ahasa C dikatakan &ahasa terstruktur karena strukturn%a mengguna menggunakan kan 'ungsi+'un 'ungsi+'ungsi gsi se&agai se&agai program+pr program+program ogram &agiann%a &agiann%a subroutine subroutine7. 7.
di
Praktikum Aplikasi Pemrograman Pemrograman dengan Bahasa C – Program tudi tudi !eknik !eknik "lektro #$%&A #$%&A
2- 2
akhir 'ungsi merupakan akhir tu&uh 'ungsi dan sekaligus adalah akhir eksekusi program. @ika program program terdiri atas le&ih dari dari satu 'ungsi* 'ungsi 'ungsi main'( &iasa main'( &iasa ditempatkan pada posisi %ang paling atas dalam pende'inisian 'ungsi. Hal ini
han%a merupakan
ke&iasaan. Tu)uann%a untuk
memudahkan pen0arian
terhad terhadap ap progra program m utama utama &agi &agi pemrog pemrogram ram.. @adi &ukanlah merupakan suatu keharusan. +. F,n'"! printf() F,n'"! printf()
Selamat belajar bahasa C misaln%a* pern%ataan %ang diperlukan &erupa( &erupa(
printf(“Selamat printf(“Selamat belajar bahasa C”);
Pern%ataan di atas &erupa pemanggilan 'ungsi printf'( dengan printf'( dengan argumen atau parameter &erupa string. /alam C suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik+ganda 7. Perlu )uga diketahui pern%ataan dalam C selalu diakhiri dengan tanda titik koma 7. Tanda titik koma dipakai se&ag se&agai ai tand tandaa pem& pem&er erhe hent ntia ian n se&ua se&uah h pern pern%a %ata taan an dan dan &uka &ukanl nlah ah se&ag se&agai ai pemisah antara dua pern%ataan. Tanda anda + pada pada string string %ang dilewa dilewatka tkan n se&aga se&agaii argum argumen en printf'( printf'( mempun%ai makna %ang khusus. Tanda ini &isa digunakan untuk men%atakan karakter khusus khusus seperti karakter karakter &aris+&aru &aris+&aru ataupun karakter backslash backslash miring kiri7. @adi @adi kara karakt kter er sepert sepertii +n se&enarn%a se&enarn%a men%atakan se&uah karakter karakter.. Contoh Contoh karakter %ang ditulis dengan diawali tanda \ adalah( \D men%atakan karakter petik+ ganda \\ men%atakan karakter backslash \t backslash \t men%atakan karakter ta&
Praktikum Aplikasi Pemrograman dengan Bahasa C – Program tudi !eknik "lektro #$%&A
2- 3
/alam &entuk %ang le&ih umum* 'ormat printf'(
printf(“string kontrol”, daftar argumen); dengan string kontrol dapat &erupa satu atau se)umlah karakter %ang akan ditampilkan ataupun &erupa penentu 'ormat %ang akan mengatur penampilan dari argumen %ang terletak pada da'tar argumen. $engenai penentu 'ormat di antaran%a &erupa( d untuk menampilkan &ilangan &ulat integer7 ' untuk menampilkan &ilangan titik+mengam&ang pe0ahan7 0 untuk menampilkan se&uah karakter s untuk menampilkan se&uah string
Contoh(
#include
$ %d&n”, ');
printf(“ama
$ %s&n”, “li”;
printf(“ilai $ %f&n”,*+; printf(“uruf $ %c&n”,-.); /
Praktikum Aplikasi Pemrograman dengan Bahasa C – Program tudi !eknik "lektro #$%&A
2- 4
P)$)"e") 3!n4%,de
,include merupakan salah satu )enis pengarah praprosesor preprocessor directi*e7. Pengarah praprosesor ini dipakai untuk mem&a0a 'ile %ang di antaran%a &erisi deklarasi 'ungsi dan de'inisi konstanta. Be&erapa 'ile )udul disediakan dalam C.
#include “namafile” Bentuk pertama ',include -namafile( mengis%aratkan &ahwa pen0arian 'ile dilakukan pada direktori khusus* %aitu direktori 'ile in0lude. Sedangkan &entuk kedua ',include /namafile0( men%atakan &ahwa pen0arian 'ile dilakukan pertama kali pada direktori akti' tempat program sum&er dan seandain%a tidak ditemukan pen0arian akan dilan)utkan pada direktori lainn%a %ang sesuai dengan perintah pada sistem operasi. ,e&an%akan program meli&atkan 'ile stdio.h 'ile+)udul 4FG standard* %ang disediakan dalam C7. Program %ang meli&atkan 'ile ini %aitu program %ang menggunakan pustaka 4FG inputoutput 7 standar seperti printf'(. K/en-$) d$%$/ P)')$/
ntuk keperluan dokumentasi dengan maksud agar program mudah dipahami di suatu saat lain* &iasan%a pada program disertakan komentar atau keterangan mengenai program. /alam C* suatu komentar ditulis dengan diawali dengan tanda F dan diakhiri dengan tanda F. Contoh ( F
Tanda ini adalah komentar untuk multiple lines
F in0lude Istdio.hJ main7 = print'Co&a\nD7 FF4ni komentar satu &aris >
2. PERCOBAAN 4mplementasikan semua permasalahan di&awah ini dengan menggunakan &ahasa pemrograman C ( 1. $en0etak kalimat dalam &e&erapa &aris* dengan tampilan se&agai &erikut(
0rogram Studi 1eknik 2lektro 3ampus 4S53 tahun 6'7 -. $en0etak kalimat dalam &e&erapa &aris* dengan tampilan se&agai &erikut (
Sa8a sekarang sedang makan 3antin 4S53 9urah meriah Cocok untuk kalangan mahasis:a ". Program di &awah \ini tidak &erhasil di+0ompile karena masih terdapat Be&erapa\kesalahan Betulkan kesalahan program di&awah ini* dan tampilkan hasiln%a(
#include perintah dasar 4ntuk itu ”programmer” harus menghafal aturan> aturan ?ang berlaku
2.5 LAPORAN PRAKTIKUM 1. Cetak listing program %ang anda &uat -. Berilah kesimpulan hasil praktikum
PENGAMBILAN KEPUTUSAN
.1 TUJUAN 1. $en)elaskan tentang operator kondisi operator relasi dan logika7 2. $en)elaskan penggunaan pern%ataan if 3. $en)elaskan penggunaan pern%ataan ifelse . $en)elaskan penggunaan pern%ataan if dalam if . $en)elaskan penggunaan pern%ataan elseif 4. $en)elaskan penggunaan pern%ataan switch
.2 TEORI DASAR ntuk keperluan pengam&ilan keputusan* C men%ediakan &e&erapa )enis pern%ataan* &erupa a. Pern%ataan if b. Pern%ataan ifelse* dan c. Pern%ataan switch Pern%ataan+pern%ataan terse&ut memerlukan suatu kondisi* se&agai &asis dalam pengam&ilan keputusan. ,ondisi umum %ang dipakai &erupa keadaan &enar dan salah.
Oe)$-) Re%$"!
Gperator relasi &iasa dipakai untuk mem&andingkan dua &uah nilai. Hasil pem&andingan &erupa keadaan &enar atau salah. ,eseluruhan operator relasi pada C ditun)ukkan pada Ta&el "+1 T$+e% 1 Oe)$"! Re%$"!
Praktikum Aplikasi Pemrograman dengan Bahasa C – Program tudi !eknik "lektro #$%&A
3-1
Oe)$-) Re%$"!
Gperator logika &iasa dipakai untuk menghu&ungkan ekspresi relasi. ,eseluruhan operator logika ditun)ukkan pada ta&el -. T$+e% 1 Oe)$"! L'!#$
Bentuk pemakaian operator 66 dan KK adalah Oe)$nd1 Oe)$-) Oe)$nd2 Pe)n($-$$n !
Pern%ataan i' mempun%ai &entuk umum ( i' kondisi7 pern%ataan Bentuk ini men%atakan ( )ika kondisi %ang diseleksi adalah &enar &ernilai logika 17* maka
pern%ataan %ang mengikutin%a akan diproses.
Se&alikn%a* )ika kondisi %ang diseleksi adalah tidak &enar &ernilai logika
7* maka pern%ataan %ang mengikutin%a tidak akan diproses. $engenai kodisi harus ditulis diantara tanda kurung* sedangkan pern%ataan dapat &erupa se&uah pern%ataan tunggal* pern%ataan ma)emuk atau pern%ataan kosong. /iagram alir dapat dilihat seperti gam&ar ".1
Arti dari pern%ataan ifelse ( @ika kondisi &enar* maka pern%ataan+1 di)alankan. Sedangkan &ila kondisi &ernilai salah* maka pern%ataaan+- %ang
di)alankan. $asing+masing pern%ataan+1 dan pern%ataan+- dapat &erupa se&uah pern%ataan tunggal* pern%ataan ma)emuk ataupun pern%ataan kosong. Contoh penggunaan pern%ataan ifelse adalah untuk men%eleksi nilai
suatu
&ilangan pem&agi. @ika nilai &ilangan pem&agi adalah nol* maka hasil pem&agian dengan nilai nol akan mendapatkan hasil tak &erhingga. @ika ditemui nilai pem&agin%a nol* maka proses pem&agian tidak akan dilakukan. Pe)n($-$$n if d! d$%$/ if
/i dalam suatu pern%ataan i' atau i'+else7 &isa sa)a terdapat pern%ataan if atau if else7 %ang lain. Bentuk seperti ini dinamakan se&agai nested if . Se0ara umum* &entuk dari pern%ataan ini adalah se&agai &erikut (
,ondisi %ang akan diseleksi pertama kali adalah kondisi %ang terluar kondisi+17. J!#$ #nd!"!*1 &ernilai salah* maka statemen else %ang terluar pasangan
if %ang &ersangkutan7 %ang akan diproses. @ika else pasangann%a ts&7 tidak ditulis* maka pen%eleksian kondisi akan dihentikan. J!#$ #nd!"!*1 &ernilai &enar* maka kondisi &erikutn%a %ang le&ih dalam
kondisi+-7 akan diseleksi. @ika kondisi+- &ernilai salah* maka statemen else pasangan dari if %ang &ersangkutan %ang akan diproses. @ika else untuk kondisi+-7 tidak ditulis* maka pen%eleksian kondisi akan dihentikan. /engan 0ara %ang sama* pen%eleksian kondisi akan dilakukan sampai
dengan kondisi+n* )ika kondisi+kondisi se&elumn%a &ernilai &enar.
Pe)n($-$$n else-if
Contoh implementasi nested i' ini misaln%a pem&uatan se&uah program kalkulator sederhana. ser mem&erikan masukan dengan 'ormat ( Oe)$nd1 e)$-) e)$nd2
@enis operasi %ang dikenakan &ergantung pada )enis operator ang dimasukkan oleh user. Gleh karena itu program akan menge0ek apakah operator &erupa tanda MN* MFN* MON* ataukah tanda M+M. @ika operator &erupa tanda MN maka e)$nd1 akan dikalikan dengan
e)$nd2 . @ika operator &erupa tanda MFN maka e)$nd1 akan di&agi dengan
e)$nd2 . @ika operator &erupa tanda MON maka e)$nd1 akan di)umlahkan dengan
e)$nd2 . @ika operator &erupa tanda M+N maka e)$nd1 akan dikurangi dengan
e)$nd2 .
,alau operator %ang dimasukkan &ukan merupakan salah satu dari )enis
operator di atas* maka ekspresi terse&ut tidak akan diproses* dan user akan mendapatkan pesan &erupa ( 4nalid operatorQD Pe)n($-$$n switch
Pern%ataan switch merupakan pern%ataan %ang diran0ang khusus untuk menangani pengam&ilan keputusan %ang meli&atkan se)umlah alternati'* misaln%a untuk menggantikan pern%ataan if &ertingkat. Bentuk umum pern%ataan switch adalah (
dengan ekspresi dapat &erupa ekspresi &ertipe integer atau &ertipe karakter. /emikian )uga #n"-$n-$*1 * #n"-$n-$*2 * R* #n"-$n-$*n dapat &erupa konstanta integer atau karakter. Setiap pern%ataan+i pern%ataan+1* R * pern%ataan+n7 dapat &erupa pern%ataan tunggal ataupun pern%ataan )amak. /alam hal ini urutan penulisan pern%ataan 0ase tidak &erpengaruh. Proses pen%eleksian &erlangsung se&agai &erikut ( pengu)ian pada switch akan dimulai dari #n"-$n-$*1 . ,alau nilai #n"-$n-$*
1 0o0ok dengan ekspresi maka e)n($-$$n*1 di)alankan. ,ata kun0i break
harus disertakan di &agian akhir setiap pern%ataan case* %ang akan mengarahkan eksekusi ke akhir swit0h. ,alau tern%ata e)n($-$$n*1 tidak sama dengan nilai ekspresi* pengu)ian
dilan)utkan pada konstanta+-* dan &erikutn%a serupa dengan pengu)ian pada #n"-$n-$*1 . @ika sampai pada pengu)ian case %ang terakhir tern%ata tidak ada ke0o0okan*
maka pern%ataan %ang mengikuti kata kun0i default %ang akan dieksekusi. ,ata kun0i default ini &ersi'at opsional. Tanda kurung kurawal tutup >7 menandakan akhir dari proses pen%eleksian
kondisi case.
. PERCOBAAN 1. /engan menggunakan pern%ataan ifelse &ertingkat* &uatlah program untuk memilih penghitungan luas segitiga* persegi pan)ang atau &u)ur sangkar.
-. /engan
menggunakan
pern%ataan
swit0h+0ase*
&uatlah
program
untuk
mengkonersikan nilai huru' ke nilai angka. Huru' A memiliki nilai angka * huru' B memiliki nilai angka "* huru' C memiliki nilai angka -* huru' / memiliki nilai angka 1* sedangkan huru' E memiliki nilai angka .
". /engan menggunakan nested if * &uatlah program untuk men0ari nilai terke0il dari " angka %ang diinputkan. Adapun potongan programn%a adalah(
. ,er)akan soal no - dengan menggunakan pern%ataan if else.
. LAPORAN PRAKTIKUM 1.2 ,er)akan program pada per0o&aan 1 dengan perintah switchcase 1.3 Buatlah flowchart dari per0o&aan 1 sampai per0o&aan dan output hasil eksekusi programn%a
PENGULANGAN PROSES
.1 TUJUAN 1. $en)elaskan proses pengulangan menggunakan pern%ataan for 2. $en)elaskan proses pengulangan menggunakan pern%ataan while 3. $en)elaskan proses pengulangan menggunakan pern%ataan dowhile
.2 TEORI DASAR Pe)n($-$$n for
$engulang suatu proses merupakan tindakan %ang &an%ak di)umpai dalam pemrograman. Pada semua &ahasa pemrograman* pengulangan proses ditangani dengan suatu mekanisme %ang dise&ut loop. /engan menggunakan loop* suatu proses %ang &erulang misaln%a menampilkan tulisan %ang sama seratus kali pada la%ar dapat diimpelementasikan dengan kode program %ang pendek. Pern%ataan pertama %ang digunakan untuk keperluan pengulangan proses adalah pern%ataan 'or. Bentuk pern%ataan ini (
Pern%ataan+pern%ataan terse&ut memerlukan suatu kondisi* se&agai &asis dalam pengam&ilan keputusan. ,ondisi umum %ang dipakai &erupa keadaan &enar dan salah.
for (ungkapan'; ungkapan6; ungkapan7) pern8ataan; ,egunaan dari masing+ masing ungkapan pada pern%ataan 'or. ngkapan1 ( digunakan untuk mem&erikan inisialisasi terhadap aria&el
pengendali loop.
ngkapan- ( dipakai se&agai kondisi untuk keluar dari loop.
ngkapan" ( dipakai se&agai pengatur kenaikan nilai aria&el pengendali loop.
,etiga ungkapan dalam for terse&ut harus dipisahkan dengan tanda titik koma 7.
/alam
hal ini pern%atan &isa &erupa pern%ataan tunggal maupun )amak. @ika
pern%ataann%a &er&entuk
)amak* maka pern%ataan+pern%ataan terse&ut harus
diletakkan di antara kurung kurawal &uka 5=7 dan kurung kurawal tutup 5>7* sehingga 'ormatn%a men)adi (
for (ungkapan'; ungkapan6; ungkapan7 " pern8ataan; pern8ataan; /
Contoh penggunaan 'or* misaln%a untuk menampilkan deretan angka se&agai &erikut (
6 7 + ' ntuk keperluan ini* pern%ataan for %ang digunakan &erupa (
for (bilangan @ 6; bilangan <@ '; bilangan A@ ') printf(B%d&nB, bilangan); ,alau digam&arkan dalam &entuk diagram alir* akan terlihat s&&
G$/+$) .1 D!$')$/ A%!) for
D Eile program $ for'c Contoh pemakaian for untuk membentuk deret naik D #include
6 7 + F G * H ' Pada program di atas* kenaikan terhadap aria&el pengendali loop se&esar 1 positi'7* %ang din%atakan dengan ungkapan
bilangan A@ ' %ang sama artin%a dengan
bilangan @ bilangan A ' Pada 0ontoh %ang meli&atkan pern%ataan for di atas* kenaikan aria&el pengendali loop &erupa nilai positi'. Se&enarn%a kenaikan terhadap aria&el pengendali loop &isa diatur &ernilai negati'. Cara ini dapat digunakan untuk memperoleh deret se&agai &erikut (
F + 7 6 '
ntuk itu selengkapn%a program %ang di&utuhkan adalah se&agai &erikut ( D Eile program $ for6c Contoh pemakaian for membentuk deret turun D #include @ ') printf(B%d&nB, bilangan); /
untuk
Cn-& e#"e#,"! 6
F + 7 6 ' ,adang+kadang di)umpai adan%apern%ataan 'or %ang tidak mengandung &agian ungkapan %ang lengkap &e&erapa ungkapan dikosongkan7. /engan 0ara ini* pern%ataan(
Tampak &ahwa ungkapan %ang &iasa dipakai untuk inisialisasi aria&el pengendali loop tak ada. Se&agai gantin%a pengendalian loop diatur se&elum pern%ataan 'or* &erupa
bilangan @ 6; Pengosongan ini )uga dilakukan pada ungkapan %ang &iasa dipakai untuk menaikkan nilai aria&el pengendali loop. Se&agai gantin%a* di dalam tu&uh loop di&erikan pern%ataan untuk menaikkan nilai aria&el pengendali loop* %aitu &erupa
bilangan A@ '; ngkapan %ang tidak dihilangkan &erupa &ilangan I1. ngkapan ini tetap disertakan karena dipakai se&agai kondisi untuk keluar dari loop. Sesungguhn%a ungkapan %ang dipakai se&agai kondisi keluar dari loop )uga &isa dihilangkan* sehingga &entukn%a men)adi(
for (;;) pern8ataan
Suatu pertan%aan mungkin tim&ul Lalu &agaimana 0aran%a kalau ingin keluar dari loop pada &entuk di atasD. Caran%a adalah dengan menggunakan pern%ataan %ang diran0ang khusus untuk keluar dari loop. $engenai hal ini akan di&ahas pada su& &a& %ang lain. Pe)n($-$$n &!%e
Pada pern%ataan while* penge0ekan terhadap loop dilakukan di &agian awal se&elum tu&uh loop7. Le&ih )elasn%a* &entuk pern%ataan while adalah se&agai &erikut (
:hile (kondisi) pern8ataan;
dengan pern%ataan dapat &erupa pern%ataan tunggal* pern%ataan ma)emuk ataupun pern%ataan kosong. Proses pengulangan terhadap pern%ataan di)elaskan pada gam&ar &erikut (
Gambar 4.2 iagram !lir while
/engan melihat gam&ar 5.-* tampak &ahwa ada kemungkinan pern%ataan %ang merupakan tu&uh loop tidak di)alankan sama sekali* %aitu kalau hasil pengu)ian kondisi while %ang pertama kali tern%ata &ernilai salah.
Contoh pemakaian while misaln%a untuk mengatur agar tom&ol %ang ditekan oleh pemakai program &erupa salah satu diantara U*%* T atau t. 4mpelementasin%a (
Praktikum Aplikasi Pemrograman dengan Bahasa C – Program tudi !eknik "lektro #$%&A
4-6
Contoh eksekusi ( 0ilihlah ? atau 1 0ilihan anda adalah ? 4nisialisasi terhadap aria&el sudahV&enar %ang akan di)alankan pada kondisi while dengan mem&eri nilai awal &ernilai 'alse sudahV&enar 7 dimaksudkan agar tu&uh loop di)alankan minimal sekali.
Pe)n($-$$n "o-while
Bentuk pern%ataan dowhile
do pern8ataan; :hile (kondisi) Pada pern%ataan dowhile* tu&uh loop &erupa pern%ataan*dengan pern%ataan &isa &erupa pern%ataan tunggal* pern%ataan ma)emuk ataupun pern%ataan kosong. Pada pern%ataan do* mula+mula pern%ataan di)alankan. Selan)utn%a* kondisi diu)i.
Seandain%a kondisi &ernilai &enar* maka pern%ataan di)alankan lagi* kemudian kondisi diperiksa kem&ali* dan seterusn%a. ,alau kondisi &ernilai salah pada saat dites* maka pern%ataan tidak di)alankan lagi. ntuk le&ih )elasn%a dapat dilihat pada ;am&ar .". Berdasarkan ;am&ar ." terlihat &ahwa tu&uh loop minimal akan di)alankan sekali.
G$/+$) . D!$')$/ A%!) "o*while
Program &erikut mem&erikan 0ontoh pemakaian do+while untuk mengatur penampilan tulisan WBAHASA CW se&an%ak sepuluh kali. Contoh(
i @ ; do " puts(BS CB); iAA; / :hile(i<'); Pada program di atas* aria&el pen0a0ah dipakai untuk menghitung )umlah tulisan %ang sudah ditampilkan pada la%ar. Selama nilai pen0a0ah kurang dari 1* maka perintah
puts(BS CB); akan dilaksanakan kem&ali Penanganan pem&a0aan tom&ol pada 0ontoh program pilihan.0 %ang memakai while di atas* kalau diimplementasikan dengan memakai dowhile adalah se&agai &erikutD
Contoh eksekusi (
0ilihlah ? atau 1 0ilihan anda adalah 1 $ula+mula tom&ol di&a0a dengan menggunakan getchar 7 dan kemudian di&erikan ke aria&el pilihan. Sesudah itu* aria&el ",d$&8+en$) akan diisi dengan nilai &enar 17 atau salah 7 tergantung dari nilai pilihan. ,alau pilihan &erisi salah satu diantara MUN*M%N* MTN atau MtN* maka sudah &erisi salah satu diantara MUN* M%N* MTN atau MtN* maka sudahV&enar akan &erisi &enar. 9ilai pada aia&el ",d$&8+en$) ini selan)utn%a di)adikan se&agai kondisi dowhile. Pengulangan terhadap pem&a0aan tom&ol akan dilakukan kem&ali selama sudahV&enar &enilai salah.
. PERCOBAAN 17 /engan menggunakan pern%ataan 'or* &uatlah program untuk men)umlahkan integer mulai dari 1 sampai dengan harga &atas %ang di&a0a dari ke%&oard. Pen)umlahan dapat dilakukan dengan menggunakan se&uah tempat penampungan hasil pen)umlahan* dan pen)umlahan dilakukan satu per satu terhadap angka mulai 1 sampai dengan angka %ang di&a0a dengan hasil sementara %ang telah disimpan. @ika angka terakhir telah di)umlahkan* maka penampungan hasil sementara men)adi hasil akhir.
1ampilan$ 9asukkan integer positif $' Iumlah ' sampai '@++
-7 ;unakan loop while untuk mem&uat program %ang dapat men0ari total angka %ang dimasukkan dengan tampilan se&agai &erikut (
9asukkan bilangan ke>' $ + 9au memasukkan data lagi J8tK L 8 9asukkan bilangan ke>6 $ 7 9au memasukkan data lagi J8tK L t 1otal bilangan @ * "7 Buatlah program %ang menentukan se&uah integer dengan a0ak* dan mem&a0a se&uah integer &erulang kali sampai integer %ang di&a0a sama dengan integer %ang ditentukan se0ara a0ak.
1ampilan$ misalkan angka hasil adalah) ngka tebakan$7
pengacakan
1ebakan terlalu kecil ngka 1ebakan$++ 1ebakan 1erlalu besar ngka 1ebakan$+ 1ebakan benar
.5 LAPORAN PRAKTIKUM Buatlah flowchart dari per0o&aan 1 sampai per0o&aan " dan output hasil eksekusi programn%a
FUNGSI DASAR 5.1 TUJUAN 17 $emahami 'ungsi dasar &aha0a C -7 $em&uat
5.2 TEORI DASAR Pen'e)-!$n
men)adi
terstruktur*
sehingga
mudah
dipahami
dan
mudah
dikem&angkan. /engan memisahkan langkah+langkah detail ke satu atau le&ih 'ungsi+'ungsi* maka
'ungsi utama main77 men)adi le&ih pendek* )elas dan mudah dimengerti. &7 /apat mengurangi pengulangan duplikasi7 kode. Langkah+langkah program %ang sama dan dipakai &erulang+ulang di program dapat dituliskan sekali sa)a se0ara terpisah dalam &entuk 'ungsi+'ungsi. Selan)utn%a &agian program %ang mem&utuhkan langkah+langkah ini tidak perlu selalu menuliskann%a* tetapi 0ukup memanggil 'ungsi'ungsi terse&ut.
F,n'"! D$"$)
printf'( * %aitu untuk menampilkan in'ormasi atau data ke la%ar.
scanf'( * %aitu untuk mem&a0a kode tom&ol %ang diinputkan.
Pada umumn%a 'ungsi memerlukan nilai masukan atau parameter %ang dise&ut se&agai argumen. 9ilai masukan ini akan diolah oleh 'ungsi. Hasil akhir 'ungsi &erupa se&uah nilai dise&ut se&agai return alue atau nilai keluaran 'ungsi7. Gleh karena itu 'ungsi
sering digam&arkan se&agai Wkotak gelapW seperti ditun)ukkan pada gam&ar di &awah ini.
G$/+$) 5.1 D!$')$/ Mde% F,n'"!
Penggam&aran se&agai kotak gelap di antaran%a men)elaskan &ahwa &agian dalam 'ungsi &ersi'at pri&adi &agi 'ungsi. Tak ada suatu pern%ataan di luar 'ungsi %ang &isa mengakses &agian dalam 'ungsi* selain melalui parameter atau aria&el eksternal %ang akan di&ahas &elakangan7. $isaln%a melakukan goto dari pern%ataan di luar 'ungsi ke pern%ataan dalam 'ungsi adalah tidak diperkenankan.
Bentuk umum dari de'inisi se&uah 'ungsi adalah se&agai &erikut
,eterangan ( tipe+keluaran+'ungsi* dapat &erupa salah satu tipe data C* misaln%a 0har atau int .
,alau penentu tipe tidak dise&utkan maka dianggap &ertipe int se0ara de'ault7. tu&uh 'ungsi &erisi deklarasi aria&el kalau ada7 dan statemen+statemen %ang akan
melakukan tugas %ang akan di&erikan kepada 'ungsi %ang &ersangkutan. Tu&uh 'ungsi ini ditulis di dalam tanda kurung kurawal &uka dan kurung kurawal tutup. Se&uah 'ungsi %ang sederhana &isa sa)a tidak mengandung parameter sama sekali dan tentu sa)a untuk keadaan ini deklarasi parameter )uga tidak ada. Contoh (
int inisialisasi() " return(); /
Pada 'ungsi di atas ( tipe keluaran 'ungsi tidak dise&utkan* &erarti keluaran 'ungsi &er tipe int. inisialisasi adalah nama 'ungsi Tanda 7 sesudah nama 'ungsi men%atakan &ahwa 'ungsi tak memiliki
parameter. Tanda = dan > adalah awal dan akhir 'ungsi return() merupakan se&uah pern%ataan dalam tu&uh 'ungsi.
Me/+e)!#$n N!%$! Ke%,$)$n F,n'"!
Suatu 'ungsi di&uat untuk maksud men%elesaikan tugas tertentu. Suatu 'ungsi dapat han%a melakukan suatu tugas sa)a tanpa mem&erikan suatu hasil keluaran atau melakukan suatu tugas dan kemudian mem&erikan hasil keluaran.
/alam tu&uh 'ungsi* pern%ataan %ang digunakan untuk mem&erikan nilai keluaran 'ungsi &erupa return. Se&agai 0ontoh* pada 'ungsi inisialisasi 7 di atas terdapat pern%ataan return7 merupakan pern%ataan untuk mem&erikan nilai keluaran 'ungsi &erupa nol. Selengkapn%a perhatikan program di &awah ini
D Eile program $ inisialc Contoh pembuatan fungsi D int inisialisasi(); #include
Contoh eksekusi :
M @ 8 @ Program di atas sekaligus men)elaskan &ahwa suatu 'ungsi 0ukup dide'inisikan satu kali tetapi &isa digunakan &e&erapa kali. Pada keadaan sema0am ini seandain%a tu&uh 'ungsi mengandung &an%ak pern%ataan* maka pemakaian 'ungsi dapat menghindari duplikasi kode dan tentu sa)a menghemat penulisan program maupun kode dalam memori.
G$/+$) 5.2 P)"e" Pe/$n''!%$n F,n'"!
$isaln%a pada saat pern%ataan
M @ inisialisasi(); di)alankan* mula+mula eksekusi akan diarahkan ke 'ungsi inisialisasi7* selan)utn%a suatu nilai keluaran hasil 'ungsi7 akhir 'ungsi di&erikan ke X. Proses %ang serupa* dilakukan untuk pern%ataan
8 @ inisialisasi(); Bagi suatu 'ungsi* )ika suatu pern%ataan return dieksekusi* maka eksekusi terhadap 'ungsi akan &erakhir dan nilai pada parameter return akan men)adi keluaran 'ungsi. ntuk 'ungsi %ang tidak memiliki pern%ataan return* tanda > pada &agian akhir 'ungsi akan men%atakan akhir eksekusi 'ungsi. /i &awah ini di&erikan 0ontoh se&uah 'ungsi %ang mengandung dua &uah pern%ataan return.
int minimum(int M, int 8) "
if (M < 8) return(M); else return(8); / Pada 'ungsi di atas terdapat dua &uah parameter &erupa X dan %. Gleh karena itu 'ungsi )uga mengandung &agian untuk mendeklarasikan parameter* %ang men%atakan X dan % &ertipe int . Adapun penentuan nilai keluaran 'ungsi dilakukan pada tu&uh 'ungsi* &erupa pern%ataan
if (M < 8) return(M); else return(8); %ang men%atakan ( )ika X I % maka nilai keluaran 'ungsi adalah se&esar nilai X. untuk keadaan lainn%a X J %7 maka keluaran 'ungsi adalah se&esar %.
Se%en'#$n($ e)&$-!#$n )')$/ d! +$$& !n!.
D Eile program $ minimum'c D #include
Contoh eksekusi : 9asukkan nilai a @ 9asukkan nilai b @ 6 ilangan terkecil antara dan 6 adalah 6 F,n'"! Den'$n Ke%,$)$n B,#$n In-e'e)
ntuk 'ungsi %ang mempun%ai keluaran &ertipe &ukan integer* maka 'ungsi haruslah dide'iniskan dengan diawali tipe keluaran 'ungsin%a ditulis di depan nama 'ungsi7. Se&agai 0ontoh untuk menghasilkan nilai terke0il di antara dua &uah nilai real* maka de'inisin%a &erupa (
float minimum(float M, float 8) " if (M < 8) return(M); else return(8); / Perhatikan* di depan nama minimum di&erikan tipe keluaran 'ungsi &erupa float . Seluruh parameter sendiri )uga dide'inisikan dengan tipe float . Selengkapn%a adalah se&agai &erikut (
D Eile program $ minimum6c D #include
return(M); else return(8); / Cn-& e#"e#,"! 6
9asukkan nilai a @ ++ 9asukkan nilai b @ F67 ilangan terkecil antara + dan F67 adalah ++ ,husus untuk 'ungsi %ang diran0ang tanpa mem&erikan nilai keluaran melainkan han%a men)alankan suatu tugas khusus7 &iasa dide'inisikan dengan diawali kata kun0i oid di depan nama 'ungsi7. Se&agai 0ontoh perhatikan program di &awah ini.
Contoh Keluaran
P)--!e F,n'"!
Prototipe 'ungsi digunakan untuk men)elaskan kepada kompiler mengenai (
tipe keluaran 'ungsi
)umlah parameter
tipe dari masing+ masing parameter
Bagi kompiler*
in'ormasi dalam prototipe akan dipakai untuk memeriksa
kea&sahan *aliditas7
parameter
dalam
pemanggilan 'ungsi. Salah
satu
keuntungann%a adalah* kompiler akan melakukan konersi seandain%a antara tipe parameter dalam 'ungsi dan parameter saat pemanggilan 'ungsi tidak sama* atau akan menun)ukan kesalahan &ila )umlah parameter dalam de'inisi dan saat pemanggilan &er&eda. Contoh prototipe 'ungsi
G$/+$) 5. P)--!e F,n'"!
5. PERCOBAAN 17 /engan menggunakan pern%ataan 'or* &uatlah program untuk men)umlahkan integer mulai dari 1 sampai dengan harga &atas %ang di&a0a dari ke%&oard. Pen)umlahan dapat dilakukan dengan menggunakan se&uah tempat penampungan hasil pen)umlahan* dan pen)umlahan dilakukan satu per satu terhadap angka mulai 1 sampai dengan angka %ang di&a0a dengan hasil sementara %ang telah disimpan. @ika angka terakhir telah di)umlahkan* maka penampungan hasil sementara men)adi hasil akhir.
1ampilan$ 9asukkan integer positif $' Iumlah ' sampai '@++
-7 ;unakan loop while untuk mem&uat program %ang dapat men0ari total angka %ang dimasukkan dengan tampilan se&agai &erikut (
9asukkan bilangan ke>' $ + 9au memasukkan data lagi J8tK L 8
9asukkan bilangan ke>6 $ 7 9au memasukkan data lagi J8tK L t 1otal bilangan @ * "7 Buatlah program %ang menentukan se&uah integer dengan a0ak* dan mem&a0a se&uah integer &erulang kali sampai integer %ang di&a0a sama dengan integer %ang ditentukan se0ara a0ak.
1ampilan$ misalkan angka hasil adalah) ngka tebakan$7
pengacakan
1ebakan terlalu kecil ngka 1ebakan$++ 1ebakan 1erlalu besar ngka 1ebakan$+ 1ebakan benar
5. LAPORAN PRAKTIKUM Buatlah flowchart dari per0o&aan 1 sampai per0o&aan " dan output hasil eksekusi programn%a
FUNGSI MATEMATIKA 9.1 TUJUAN 1. $en)elaskan 'ungsi matematika dalam &ahasa C. -. $enerapkan
'ungsi+'ungsi
matematika
%ang
terdapat
dalam
C
dalam
men%elesaikan permasalahan.
9.2 TEORI DASAR Bahasa C men%ediakan &awaan 'ungsi matematika %ang terdapat dalam pustaka 5ibrar)7 ( /$-&.&. Agar 'ungsi matematika terse&ut dapat digunakan dalam program maka 'ungsi matematika harus disertakan dalam program melalui
pern%ataan(
#include
Be&erapa 'ungsi matematika %ang terdapat dalam li&rar% /$-&.& &ahasa C %akni(
Berikut 0ontoh penggunaan /$-&.& &ahasa 0(
Pen:e%$"$n6
9.2 PERCOBAAN Buat program gerak )atu &e&as untuk menghitung durasi &enda di udara dan ke0epatan se&elum men%entuh tanah untuk &e&erapa kali per0o&aan dengan ketinggian ( &er&eda+&eda.
9. LAPORAN PRAKTIKUM Buatlah flowchart dari per0o&aan 1 sampai per0o&aan dan output hasil eksekusi programn%a
P O I N T E R 7.1 TUJUAN 1. $engetahui konsep dari aria&el pointer 2. $engetahui penggunaan pointer arra) 3. $engetahui penggunaan pointer string
7.2 TEORI DASAR Kn"e D$"$) P!n-e)
Yaria&el pointer sering dikatakan se&agai aria&el %ang menun)uk ke o&%ek lain. Pada ken%ataan %ang se&enarn%a* aria&el pointer &erisi alamat dari suatu o&%ek lain %aitu o&%ek %ang dikatakan ditun)uk oleh pointer7. Se&agai 0ontoh* pX adalah aria&el pointer dan X adalah aria&el %ang ditun)uk oleh pX. ,alau X &erada pada alamat memori alamat awal7 1* maka pX akan &erisi 1. Se&agaimana diilustrasikan pada gam&ar &erikut(
Gambar #.1 $ariabel pointer p% men&n'&k ke ariabel %
Mende#%$)$"!#$n V$)!$+e% P!n-e)
Suatu aria&el pointer dideklarasikan dengan &entuk se&agai &erikut (
dengan tipe dapat &erupa sem&arang tipe %ang sudah di&ahas pada &a&+&a& se&elumn%a* maupun &a&+&a& &erikutn%a.
Adapun n$/$8;$)!$+e% adalah nama dari aria&el
!n-e).
Contoh pertama men%atakan &ahwa pX adalah aria&el pointer %ang menun)uk ke suatu data &ertipe !n-* sedangkan 0ontoh kedua masing 4&1 dan 4&2 adalah aria&el pointer %ang menun)uk ke data &ertipe 4&$).
Gambar #.2 l&strasi Pen"eklarasian $ariabel Pointer
Men'$-,) P!n-e) $'$) Men,n:,# #e V$)!$+e% L$!n
Agar suatu pointer menun)uk ke aria&el lain* mula+mula pointer harus diisi dengan alamat dari aria&el %ang akan ditun)uk. ntuk men%atakan alamat dari suatu aria&el* operator
<
5operator alamat* &ersi'at
&nar*7
&isa dipergunakan*
dengan menempatkann%a di depan nama aria&el. Se&agai 0ontoh* &ila = dideklarasikan se&agai aria&el &ertipe !n-* maka
&x
&erarti alamat dari aria&el XD. Adapun 0ontoh pem&erian alamat X ke suatu aria&el pointer = %ang dideklarasikan se&agai pointer %ang menun)uk ke data &ertipe !n-7 %aitu (
px = &x
Pern%ataan di atas &erarti &ahwa = di&eri nilai &erupa alamat dari aria&el =. Setelah pern%ataan terse&ut dieksekusi &arulah dapat dikatakan &ahwa = menun)uk ke aria&el =.
Men'$#"e" I"! S,$-, V$)!$+e% Me%$%,! P!n-e)
@ika suatu aria&el sudah ditun)uk oleh pointer* aria&el %ang ditun)uk oleh pointer terse&ut dapat diakses melalui aria&el itu sendiri pengaksesan langsung7 ataupun melalui !n-e) pengaksesan tak langsung7.
Pengaksesan tak langsung dilakukandengan
menggunakan operator indire0tion
tak langsung7 &erupa sim&ol &ersi'at unar%7. Contoh penerapan operator %aitu (
DpM
%ang men%atakan isi atau nilai aria&elFdata %ang pointer
ditun)uk =D .
oleh
Se&agai 0ontoh )ika % &ertipe !n-* maka sesudah dua pern%ataan &erikut
pM @ NM; 8 @ DpM; % akan &erisi nilai %ang sama dengan nilai X. Men'$#"e" d$n Men',+$& !"! S,$-, V$)!$+e% P!n-e)
Contoh &erikut mem&erikan gam&aran tentang pengu&ahan isi suatu aria&el se0ara
tak langsung 5%aitu melalui pointer7. $ula+mula pd dideklarasikan se&agai
pointer %ang menun)uk ke suatu data &ertipe 'loat dan d se&agai aria&el &ertipe 'loat. Selan)utn%a
d @ ++; digunakan untuk mengisikan nilai 5*5 se0ara langsung ke aria&el d. Adapun
pd @ N
digunakan untuk mem&erikan alamat dari d ke pd. /engan demikian pd menun)uk ke aria&el d. Sedangkan pern%ataan &erikutn%a
Dpd @ Dpd A ';
(atau$ Dpd A@ '; )
merupakan instruksi untuk mengu&ah nilai aria&el d se0ara tak langsung. Perintah di atas &erarti )umlahkan %ang ditun)uk pd dengan 1 kemudian &erikan ke %ang ditun)uk oleh dD* atau identik dengan pern%ataan
d @ d A '; Akan tetapi* seandain%a tidak ada instruksi
pd @ Nd; maka pern%ataan
Dpd @ Dpd A '; tidaklah sama dengan
d @ d A ';
P!n-e) d$n A))$(
Hu&ungan antara pointer dan arra* pada C sangatlah erat. Se&a& sesungguhn%a arra* se0ara internal akan diter)emahkan dalam &entuk pointer. Pem&ahasan &erikut
akan mem&erikan gam&aran hu&ungan antara pointer dan arra*. $isaln%a dideklarasikan di dalam suatu 'ungsi.
int tglOlahirJ7K @ " ', H, F /; dan
int Dptgl; ,emudian di&erikan instruksi
ptgl @ NtglOlahirJK; maka ptgl akan &erisi alamat dari elemen arra% tglVlahir %ang &erindeks nol. 4nstruksi di atas &isa )uga ditulis men)adi
ptgl @ tglOlahir; se&a& nama arra% tanpa tanda kurung men%atakan alamat awal dari arra%. Sesudah penugasan seperti di atas*
Dptgl
dengan sendirin%a men%atakan elemen pertama &erindeks s ama dengan nol7 dari arra%
tglOlahir
7. PERCOBAAN 17 Buatlah program untuk mengetahui alamat suatu aria&el / >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > 0rogram untuk menampilkan alamat suatu Pariabel / >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> / >
#include
Pariabel$&nB); %p&nB, Nalif); %p&nB, Nba); %p&nB, Nta);
return ; / -7 Buatlah program untuk mengakses elemen A))$( ia n-e)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 0rogram 0engaksesan elemen arra8 Pia pointer >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>> #include
9enampilkan isi arra8 Pia pointer int i; for (i @ ; i < siQeof(tglOlahir) siQeof(int); iAA) printf(B%d&nB, D(ptgl A i)); return ;
/ 7. LAPORAN Buatlah flowchart dari per0o&aan 1 sampai per0o&aan - dan programn%a
output hasil eksekusi
ARRA>
?.1 TUJUAN 1. $en)elaskan tentang arra% &erdimensi satu* dua dan &erdimensi &an%ak -. $en)elaskan tentang inisialisasi arra% tak &erukuran ". $en)elaskan arra% se&agai parameter 'ungsi
?.2 TEORI DASAR Arra) sering dise&ut diter)emahkan7 se&agai larik. Arra) adalah kumpulan dari nilai+ nilai data &ertipe sama dalam urutan tertentu %ang menggunakan se&uah nama %ang sama. 9ilai+nilai data di suatu arra) dise&ut dengan elemen+elemen arra%. Letak urutan dari elemen+elemen arra) ditun)ukkan oleh suatu su&s0ript atau indeks. Arra) &isa &erupa arra% &erdimensi satu* dua* tiga atau le&ih. Arra) &erdimensi satu one dimensional arra)7 mewakili &entuk suatu ektor. Arra) &erdimensi dua two dimensional arra)7 mewakili &entuk dari suatu matriks atau ta&le. Arra) &erdimensi tiga threedimensional arra)7 mewakili &entuk suatu ruang. A. !rra* Be)d!/en"! S$-,
Suatu arra) &erdimensi satu dideklarasikan dalam &entuk umum &erupa (
tipe_data nama_var[ukuran]; dengan (
-!e8d$-$ ( untuk men%atakan tipe dari elemen arra)* misaln%a int6 char6 float .
n$/$8;$) ( nama aria&el arra) Z ,#,)$n ( untuk men%atakan )umlah maksimal elemen arra).
Contoh pendeklarasian arra% (
float nilaiOtesJ+K; men%atakan &ahwa arra) nilaiVtes mengandung 5 elemen &ertipe 'loat.
Men'$#"e" E%e/en A))$( Be)d!/en"! S$-,
Pada C* data arra) akan disimpan dalam memori %ang &erurutan. Elemen pertama mempun%ai indeks &ernilai . @ika aria&el n!%$!8-e" dideklarasikan se&agai arra) dengan 5 elemen* maka elemen pertama memiliki indeks sama dengan * dan elemen terakhir memiliki indeks .
Bentuk umum pengaksesan arra) adalah s&& (
namaOParJindeksK
sehingga* untuk arra) n!%$!8-e"* maka ( nilaiVtes[ nilaiVtes[
elemen pertama dari n!%$!8-e" elemen ke+5 dari n!%$!8-e"
Contoh (
nilaiOtesJK @ G; scanf(“%f”, NnilaiOtesJ6K);
Contoh pertama merupakan pem&erian nilai # ke n!%$!8-e"@0. Sedangkan 0ontoh merupakan perintah untuk mem&a0a data &ilangan dari ke%&oard dan di&erikan ke n!%$!8-e"@2. Pada 0ontoh - ini
NnilaiOtesJ6K &erarti alamat dari n!%$!8-e"@2. Perlu diingat &ahwa scanf() memerlukan argumen &erupa alamat dari aria&el %ang digunakan untuk men%impan nilai masukan.
In!"!$%!"$"! A))$( Be)d!/en"! S$-,
Se&uah arra) dapat diinisialisasi sekaligus pada saat dideklarasikan. ntuk mendeklarasikan arra)* nilai+nilai %ang diinisialisasikan dituliskan di antara kurung kurawal =>7 %ang dipisahkan dengan koma.
int jumOhariJ'6K @ "7', 6*, 7', 7, 7', 7, 7', 7', 7, 7', 7, 7'/;
Be&erapa Yariasi dalam $endeklarasikan Arra% Ada &e&erapa ariasi 0ara mendeklarasikan se&uah arra% dalam hal ini %ang &erdimensi satu7* di antaran%a adalah se&agai &erikut ( int numbersJ'K; int numbersJ'K @ "7, 6G, 'F/; int numbersJK @ "6, >7, +, GH, >', +, H, 6*, >',
/; char teMtJK @ BRelcome to e: ealandB; float radiMJ'6K @ "'77F6, 'H'76*/; double radiansJ'K; A))$( Be)d!/en"! D,$
Arra) &erdimensi satu dapat disimpan pada se&uah arra% &erdimensi dua. Pendeklarasian arra) &erdimensi dua adalah se&agai &erikut (
int dataOlulusJKJ7K; 9ilai untuk men%atakan &an%akn%a &aris dan " men%atakan &an%akn%a kolom. ;am&ar &erikut mem&erikan ilustrasi untuk memudahkan pemahaman tentang arra) &erdimensi dua.
Gambar +.1 !rra* ,er"imensi &a
Sama haln%a pada arra% &erdimensi satu* data arra) akan ditempatkan pada memori %ang &erurutan
Gambar +.2 o"el Pen*impanan !rra* ,er"imensi &a pa"a emori
Men'$#"e" E%e/en A))$( Be)d!/en"! D,$
Arra) seperti dataVlulus dapat diakses dalam &entuk dataVlulus[indeks pertama* indeks kedua ( 17 dataOlulusJKJ'K @ +; merupakan instruksi untuk mem&erikan nilai 5 ke arra% dataVlulus untuk indeks pertama dan indeks kedua &ernilai 1. -7 printf(“%d”,dataOlulusJ6KJK)
merupakan
perintah
untuk
menampilkan elemen %ang memiliki indeks pertama - dan indeks kedua . Perhatikan 0ontoh potongan program di &awah ini.
A))$( Be)d!/en"! B$n($#
C memungkinkan untuk mem&uat arra% %ang dimensin%a le&ih dari dua. Bentuk umum pendeklarasian arra% &erdimensi &an%ak
tipe namaOParJukuran 'KJukuran6/TJukuranK; se&agai 0ontoh (
int dataOhurufJ6KJ*KJ*K;
merupakan pendeklarasian arra% dataVhuru' se&agai arra% &erdimensi tiga. Sama haln%a dengan arra% &erdimensi satu atau dua* arra% &erdimensi &an%ak )uga &isa diinisialisasi.
Contoh inisialisasi arra% &erdimensi tiga (
Atau &isa )uga ditulis men)adi(
ARRA> SEBAGAI PARAMETER
Arra) )uga dapat dilewatkan se&agai parameter 'ungsi. Se&agai 0ontoh ditu)ukan pada program sorting.0. Program digunakan untuk memasukkan se)umlah data* kemudian data terse&ut diurutkan naik ascending 7 dan di0etak ke la%ar. ntuk melakukan sorting proses pengurutan data7* 0ara %ang dipakai %aitu metode buble sort suatu metode pengurutan %ang paling sederhana* dan memiliki ke0epatan pengurutan %ang sangat lam&at7. Algoritma pada metode pengurutan ini adalah se&agai &erikut (
1. Atur i &ernilai -. Bandingkan X[i dengan X[)* dg ) &er)alan dari i O 1 sampai dengan n+ 1. ". Pada setiap pem&andingan* )ika X[i J X[)* maka isi X[i dan X[) ditukarkan . Bila i I n ] 17* ulangi mulai langkah -.
C$-$-$n
i X n
indeks arra) nama arra) untuk men%impan data )umlah data
Algoritma diatas & erlaku untuk pengurutan menaik ascending 7. ntuk pengurutan menurun descending 7* penukaran dilakukan )ika X[i I X[). Pen)elasan proses pengurutan terhadap 5 &uah data ditun)ukkan pada gam&ar di &awah. /ata semula se&elum pengurutan7 adalah
+,+
7,7
6,6
6+,6
7',7
Setelah pengurutan menaik se0ara ascending 7* hasil %ang diharapkan &erupa
6,6
6+,6
7,7
7',7
+,+
?. PERCOBAAN 1. Buatlah program %ang mem&a0a se&uah arra% karakter*NaNRN^N. ,emudian menghitung 'rekuensi kemun0ulan tiap karakter. Tampilan( $asukkan )umlah karakter %ang akan dihitung( 5
9asukkan 9asukkan 9asukkan 9asukkan 9asukkan
karakter karakter karakter karakter karakter
ke>'$a ke>6$b ke>7$c ke>7$a ke>7$a
Erekuensi a@7 Erekuensi b@' Erekuensi c@' -. Buatlah program menggunakan inisialisasi arra% &erdimensi dua se&agai &erikut( >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> / / 0rogram inisialisasi arra8 berdimensi dua >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> /
#include
" " " " " " " " /;
, , , ', ', ', ', ,
', ', ', ', ', ', ', ,
', , , ', , , , ,
', , , ', , , , ,
', , , ', , , , ,
', ', ', ', , , , ,
, , , ', ', ', ', ,
/, /, /, /, /, /, /, /
int i, j; for (i @ ; i < *; iAA) " for (j @ ; j < *; jAA) if (hurufOJiKJjK @@ ') putchar(UDU); else putchar(U U); printf(B&nB); / return ; / ,emudian lakukan untuk &e&erapa per0o&aan
?. LAPORAN Buatlah flowchart dari per0o&aan 1 sampai per0o&aan " dan output hasil eksekusi programn%a.
STRING .1 TUJUAN 1. $en)elaskan tentang konsep string -. $en)elaskan operasi 4FG pada string ". $en)elaskan 0ara mengakses elemen string . $en)elaskan &er&agai 'ungsi mengenai string
.2 TEORI DASAR Kn"-$n-$ d$n V$)!$+e% S-)!n'
String merupakan &entuk data %ang &iasa dipakai dalam &ahasa pemrograman untuk keperluan menampung dan memanipulasi data teks* misaln%a untuk menampung men%impan7 suatu kalimat. Pada &ahasa C* string &ukanlah merupakan tipe data tersendiri* melainkan han%alah kumpulan dari nilai+nilai karakter %ang &erurutan dalam &entuk arra% &erdimensi satu. Kn"-$n-$ S-)!n' Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda* misaln%a(
ABC/ED 9ilai string ini disimpan dalam memori se0ara &erurutan dengan komposisi se&agai &erikut(
Setiap karakter akan menempati memori se&esar 1 &%te. B%te terakhir otomatis akan &erisi karakter 9LL \7. /engan mengetahui &ahwa suatu string diakhiri nilai 9LL* maka akhir dari nilai suatu string akan dapat dideteksi. Se&agai se&uah arra%
karakter* karakter pertama dari nilai string mempun%ai indeks ke+* karakter kedua mempun%ai indeks ke+1* dan seterusn%a. V$)!$+e% S-)!n'
Yaria&el string adalah aria&el %ang dipakai utuk men%impan nilai string. $isaln%a (
char nameJ'+K;
merupakan instruksi untuk mendeklarasikan aria&el string dengan pan)ang maksimal 15 karakter termasuk karakter 9LL7. /eklarasi terse&ut se&enarn%a tidak lain merupakan deklarasi arra% &ertipe char . In!"!$%!"$"! S-)!n'
Suatu aria&el string dapat diinisialisasi seperti haln%a arra% %ang lain. 9amun tentu sa)a elemen terakhirn%a haruslah &erupa karakter 9LL. Se&agai 0ontoh (
char nameJK @ "UVU,UU,UU, U5U,.&./; %ang men%atakan &ahwa name adalah aria&el string dengan nilai awal &erupa string ( 2A9iD . Bentuk inisialisasi %ang le&ih singkat (
char nameJK @ “V5”; Pada &entuk ini* karakter 9LL tidak perlu ditulis. Se0ara implisit akan disisipkan oleh kompiler. Perlu diperhatikan* &ila name dideklarasikan se&agai string* penugasan assignment 7 suatu string ke aria&el string seperti name 2A94D adalah -!d$# d!e)#en$n#$n. Pengisian string ke aria&el string akan di&ahas pada su& &a& &erikutn%a.
INPUT OUTPUT DATA STRING Me/$",##$n D$-$ S-)!n'
Perhatikan (
namaarra* adalah aria&el &ertipe arra% o' 0har %ang akan digunakan untuk men%impan string masukan.
/i depan namaarra* tidak perlu ada operator 6 operator alamat7* karena namaarra* tanpa kurung siku sudah men%atakan alamat %ang ditempati oleh elemen pertama dari arra* ts&. ,alau memakai scanf( (6 data string masukan tidak &oleh mengandung spasi.
Men$/!%#$n I"! V$)!$+e% S-)!n'
ntuk menampilkan isi aria&el string* 'ungsi %ang digunakan adalah puts'( atau printf'(. Bentuk umum pemakaiann%a adalah se&agai &erikut (
#include
menampilkan isi aria&el string tanpa mem&erikan tam&ahan n. Sehingga* agar kedua pern%ataan di atas mem&erikan keluaran %ang sama* maka pada pern%ataan )!n- diru&ah men)adi(
printf(B%s&nB, ParOstring); F,n'"!*F,n'"! Men'en$! S-)!n'
Berikut ini akan di&ahas &e&erapa 'ungsi pustaka %ang umumn%a disediakan oleh kompiler C untuk mengoperasikan suatu nilai string.
#include
F,n'"! "-)%en ,n-,# Men'e-$&,! P$n:$n' N!%$! S-)!n'
$engga&ungkan dua &uah nilai string tidak dapat dilakukan dengan operator MON* karena operator ini &ukan operator untuk operasi string. Pengga&ungan dua &uah nilai string dapat dilakukan dengan 'ungsi pustaka "-)4$- dengan menam&ahkan string sum&er ke &agian akhir dari string -,:,$n. ,eluaran dari 'ungsi ini adalah string -,:,$n .
Cn-& entuk e/$#$!$n ,n'"! 6
#include
. PERCOBAAN 17 ,etikkan se&uah kalimat melalui ke%&oard kemudian didapatkan keluaran &erupa laporan apakah kalimat ts& palindrom ataukah &ukan. $isal ( 3alimat $ 3S4V V4S3 1ermasuk 0W5=VX9 3alimat $ 93 9W9 ukan 0W5=VX9 Catatan ( dise&ut palindrom adalah &ila urutan kalimat di&alik akan menghasilkan kalimat %ang sama -7 Buatlah program untuk mengurutkan nama seseorang. Contoh( Se+e%,/ d!,),-#$n 6 9ama ke+1( Suadi marwan 9ama ke+-( A&di 2ahar)o 9ama ke+"( Shintiana 9ama ke+( Budi Sulist%o Se",d$& d!,),-#$n
9ama ke+1( A&di 2ahar)o 9ama ke+-( Budi Sulist%o 9ama ke+"( Shintiana 9ama ke+( Suadi $arwan
. LAPORAN Buatlah flowchart dari per0o&aan dan output hasil eksekusi programn%a
S T R U K T U R 10.1 TUJUAN 1. $en)elaskan 0ara mendeklarasikan struktur -. $en)elaskan 0ara menginisialisasi struktur ". $en)elaskan 0ara mengakses elemen struktur . $en)elaskan pem&entukan dan 0ara mengakses arra) dari struktur arra) of struct 7
10.2 TEORI DASAR /alam Struktur adalah pengelompokan aria&el+aria&el %ang &ernaung dalam satu nama %ang sama. Ber&eda dengan arra) %ang &erisi kumpulan aria&el+aria&el %ang bertipe sama dalam satu nama* maka suatu struktur dapat terdiri atas aria&el+aria&el
%ang &er&eda
tipen%a dalam satu nama struktur.
Struktur &iasa dipakai untuk
mengelompokkan &e&erapa in'ormasi %ang &erkaitan men)adi se&uah. Yaria&el+aria&el %ang mem&entuk suatu struktur* selan)utn%a dise&ut se&agai elemen dari struktur atau 'ield. /engan demikian dimungkinkan suatu struktur dapat &erisi elemen+elemen data &er&eda tipe seperti char6 int6 float6 double* dan lain+lain. Contoh se&uah struktur adalah in'ormasi data tanggal date7 %ang &erisi( da) month* dan )ear
Mende!n!"!#$n < Mende#%$)$"!#$n S-),#-,)
Suatu struktur dide'inisikan dengan menggunakan kata kun0i stru0t. Contoh pende'inisian se&uah tipe data struktur (
struct date " int month; int da8; int 8ear; /; struct date " int month, da8, 8ear; /;
%ang mende'inisikan se&uah tipe data struktur &ernama date %ang memiliki tiga &uah elemen field 7 &erupa(
/alam mende'inisikan se&uah struktur* elemen %ang terkandung di dalamn%a &isa )uga &erupa se&uah struktur* 0ontoh (
struct date " int month, da8, 8ear; /; struct person " char nameJ7K; struct date birthda8; /; struct person student; deklarasi Par student
/iagram struktur data dari aria&el student dapat digam&arkan s&& (
Elemen dari suatu aria&el struktur dapat diakses dengan men%e&utkan nama aria&el struktur diikuti dengan operator titik M.N7 dan nama dari elemen strukturn%a. Cara penulisann%a se&agai &erikut ;$)!$+e%8"-),#-,).n$/$8!e%d
ntuk mem&erikan data nama ke 'ield name dari aria&el student di atas* maka pern%ataan %ang diperlukan misaln%a adalah (
strcp8(studentname, B9499= 5SB);
Pada pern%ataan di atas* student.name dapat di&a0a se&agai W !e%d n$/e d$)! "-,den- W.
Contoh &erikut merupakan instruksi untuk mengisikan data pada 'ield &irthda% (
studentbirthda8da8 @ '; Sedangkan untuk mendapatkan isi suatu 'ield dari aria&el struktur* 0ontohn%a (
tgl @ studentbirthda8da8; puts(studentname);
Contoh pertama merupakan instruksi untuk mem&erikan isi dari 'ield da% ke aria&el tgl. Sedangkan 0ontoh kedua merupakan instruksi untuk menampilkan isi dari field name.
Men'!n!"!$%!"$"! S-),#-,) Se&uah struktur )uga &isa diinisialisasi pada saat dideklarasikan. Hal ini serupa dengan inisialisasi arra%* %aitu elemen+elemenn%a dituliskan di dalam sepasang kurung kurawal M= >M7 dengan masing+masing dipisahkan dengan koma. /eklarasi struktur didahului dengan kata kun0i static* 0ontoh.
static struct Qodiak bintang @ "BSagitariusB, 66, '', 6', '6/;
A))$( d$n S-),#-,) Elemen+elemen dari suatu arra% )uga dapat &er&entuk se&uah struktur. $isaln%a arra% %ang dipakai untuk men%impan se)umlah data siswa struct student 7. Arra) struktur &erdimensi satu ini mem&entuk suatu ta&el* dengan &arisn%a menun)ukkan elemen dari arra)+n%a dan kolomn%a menun)ukkan elemen dari struktur. /alam hal ini maka deklarasi %ang di&utuhkan adalah se&agai &erikut (
%ang artin%a* mendeklarasikan arra% student %ang memiliki elemen %ang &ertipe stru0t person se&an%ak $A,S. Setelah arra) student dideklarasikan* maka ruang %ang disediakan ditun)ukkan dalam ;am&ar &erikut.
Gambar 1/.1 !rra* st&"ent
Elemen+elemen dari arra% stuktur terse&ut &isa diakses dengan 0ara se&agai &erikut( /i samping 0ara pendeklarasian di atas* struktur )uga dapat dideklarasikan dalam &er&agai &entuk %ang lain* di antaran%a s&& (
%aitu mende'inisikan struktur date* sekaligus mendeklarasikan aria&el toda% dan tomorrow dengan tipe struktur date. /emikian )uga mende'inisikan struktur person* sekaligus mendeklarasikan aria&el arra% student se&an%ak $A,S elemen dengan tipe struktur person. Atau 0ara lainn%a mende'inisikan* mendeklarasikan sekaligus menginisialisasi struktur* se&agai &erikut (
struct date " int month, da8, 8ear; / toda8 @ "+,',6'/;
10.PERCOBAAN 1. /e'inisikan se&uah struktur misalkan naman%a dataVtoko7 %ang memiliki " &uah field &erupa ( se&uah arra) karakter dengan 5 elemen misalkan naman%a nama7* se&uah integer misalkan naman%a data7* dan se&uah float misalkan naman%a harga7. 4nputkan data 6 tampilkan hasiln%a Q Tampilan (
9asukkan nama barang $ sabun 9asukkan jumlah barang $ + 9asukkan harga per barang $ 6 Iadi
barang
8ang
dimasukkan
adalah
sabun,
barang + dan total hargan8a adalah '
jumlah
-. Buatlah program se&agai &erikut dengan menggunakan arra) of struct (
!nput:
ama 9hs ilai 1ugas ilai 41S ilai 4S 0engisian nilai dilakukan secara langsung "roses: ilai khir@ 6% tugas A % 41S A %4S ilai huruf (*'>'), (G'>*), (F+>G), C(F'>F), C(+F>F), =( ++), 2(>7H) ilai din8atakan lulus jika minimal C #utput :
ama $ Vano ilai tugas ilai 41S $ ilai 4S $ ilai akhir ilai uruf ama $ Cita ilai tugas ilai 41S $ ilai 4S $ ilai akhir ilai uruf
$ F * * $ GF $
$ * ' * $ ** $
.
Buatlah program untuk Pem&uatan dan Pengsksessan Struktur &erikut( ********************************************************************************
pembuatan dan pengaksesan struktur >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #include
/
0engaksesan anggota struktur tanggalOlahirtanggal @ '; tanggalOlahirbulan @ H; tanggalOlahirtahun @ 'HF;
/
printf(B%d%d%d&nB, tanggalOlahirtanggal, tanggalOlahirbulan, tanggalOlahirtahun); return ; / ,emudian lakukan per0o&aan dengan untuk &e&erapa aria&le akses anggota struktur.
. Buatlah Program Penetapan _odiak dengan menggunkan 'ungsi S-),#-,) ,ntuk menentukan apakah ^odiak anda Sagitarius atau &ukan / / / /
>>>>>>>>>>>>>>>>>>>>>>>>>>>> 0rogram inisialisasi struktur untuk penentuan Qodiak >>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include YY>YYYY)$ B); scanf(B%d>%d> %dB, NtglOlhr, NblnOlhr, NthnOlhr); if ( (tglOlhr !@ bintangtglOa:al NN blnOlhr @@ bintangblnOa:al) ZZ (tglOlhr <@ bintangtglOakhir NN blnOlhr @@ bintangblnOakhir) ) printf(Bintang nda adalah %s&nB, bintangnama); else
printf(Bintang nda bukanlah %s&nB, bintangnama); return ; / ,emudian Lakukan per0o&aan untuk ^odiak %ang lain
10.5 LAPORAN Buatlah flowchart dari per0o&aan 1 sampai per0o&aan dan programn%a
output hasil eksekusi