laporan resmi 21-22 konsep pemrograman [string]

17
8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String] http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 1/17 PRAKTIKUM 21 String 1 A. Dasar Teori Konstanta dan Variabel String String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks, misalnya untuk menampung (menyimpan) suatu kalimat. Pada bahasa C, string bukanlah merupakan tipe data tersendiri, melainkan hanyalah kumpulan dari nilai-nilai karakter yang berurutan dalam bentuk array berdimensi satu. Konstanta String Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda, misalnya: “AC!"#  $ilai string ini disimpan dalam memori se%ara berurutan dengan komposisi seperti yang ditun&ukkan pada gambar '.'. Setiap karakter akan menempati memori sebesar ' byte. yte terakhir otomatis akan berisi karakter  $** (+). !engan mengetahui bahwa suatu string diakhiri nilai $**, maka akhir dari nilai suatu string akan dapat dideteksi. Sebagai sebuah array karakter, karakter pertama dari nilai string mempunyai indeks ke-, karakter kedua mempunyai indeks ke-', dan seterusnya. Variabel String ariabel string adalah ariabel yang dipakai utuk menyimpan nilai string. /isalnya : char name[15]; merupakan instruksi untuk mendeklarasikan ariabel string dengan pan&ang maksimal '0 karakter (termasuk karakter $**). !eklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe %har. Inisialisasi String Suatu ariabel string dapat diinisialisasi seperti halnya array yang lain. $amun tentu sa&a elemen terakhirnya haruslah berupa karakter $**. Sebagai %ontoh : char name[] = {'R','I','N', 'I',’\0’}; yang menyatakan bahwa name adalah ariabel string dengan nilai awal berupa string : “12$2# . entuk inisialisasi yang lebih singkat : char name[] = “RINI”; Pada bentuk ini, karakter $** tidak perlu ditulis. Se%ara implisit akan disisipkan oleh kompiler. Perlu diperhatikan, bila name dideklarasikan sebagai string, penugasan (assignment) suatu string ke ariabel string seperti name = “RINI” adalah tidak diperkenankan. Pengisian string ke ariabel string akan dibahas pada sub bab  berikutnya. Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA Halaman 1

Upload: rendra-budi-hutama

Post on 07-Aug-2018

378 views

Category:

Documents


18 download

TRANSCRIPT

Page 1: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 1/17

PRAKTIKUM 21

String 1

A. Dasar Teori

Konstanta dan Variabel String

String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks, misalnya untuk menampung (menyimpan)

suatu kalimat. Pada bahasa C, string bukanlah merupakan tipe data tersendiri, melainkan

hanyalah kumpulan dari nilai-nilai karakter yang berurutan dalam bentuk array berdimensisatu.

Konstanta String

Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda, misalnya: “AC!"# $ilai string ini disimpan dalam memori se%ara berurutan dengan komposisi seperti yang

ditun&ukkan pada gambar '.'.

Setiap karakter akan menempati memori sebesar ' byte. yte terakhir otomatis akan berisi karakter  $** (+). !engan mengetahui bahwa suatu string diakhiri nilai $**, maka akhir dari nilai

suatu string akan dapat dideteksi. Sebagai sebuah array karakter, karakter pertama dari nilai

string mempunyai indeks ke-, karakter kedua mempunyai indeks ke-', dan seterusnya.

Variabel String

ariabel string adalah ariabel yang dipakai utuk menyimpan nilai string. /isalnya :

char name[15];

merupakan instruksi untuk mendeklarasikan ariabel string dengan pan&ang maksimal '0

karakter (termasuk karakter $**). !eklarasi tersebut sebenarnya tidak lain merupakan

deklarasi array bertipe %har.

Inisialisasi String

Suatu ariabel string dapat diinisialisasi seperti halnya array yang lain. $amun tentu sa&a elemen

terakhirnya haruslah berupa karakter $**. Sebagai %ontoh :

char name[] = {'R','I','N', 'I',’\0’};

yang menyatakan bahwa name adalah ariabel string dengan nilai awal berupa string : “12$2# .

entuk inisialisasi yang lebih singkat :

char name[] = “RINI”;

Pada bentuk ini, karakter $** tidak perlu ditulis. Se%ara implisit akan disisipkan olehkompiler. Perlu diperhatikan, bila name dideklarasikan sebagai string, penugasan (assignment)

suatu string ke ariabel string seperti

name = “RINI”

adalah tidak diperkenankan. Pengisian string ke ariabel string akan dibahas pada sub bab

 berikutnya.

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 1

Page 2: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 2/17

Memasukkan Data String

Pemasukan data string ke dalam suatu ariabel biasa dilakukan dengan 3ungsi gets()atau s%an3().

entuk umum pemakaiannya adalah sebagai berikut :

#include !"di$h%

&e"!nama(arra)*;

atau

#include !"di$h%

!can+“!”, nama(arra)*;

Perhatikan :

- nama4array adalah ariabel bertipe array o3 %har yang akan digunakan untuk menyimpan string

masukan.

- !i depan nama4array tidak perlu ada operator 5 (operator alamat), karena nama4array tanpa

kurung siku sudah menyatakan alamat yang ditempati oleh elemen pertama dari array tsb.

- 6alau memakai s%an3(), data string masukan tidak boleh mengandung spasi.

Perlu diketahui, 3ungsi gets() akan memba%a seluruh karakter yang diketik melalui keyboard

sampai tombol "$7"1 ditekan. !alam hal ini tidak ada penge%ekan terhadap batasan pan&ang array yang merupakan argumennya. 8ika string yang dimasukkan melebihi ukuran

array, maka sisa string (pan&ang string masukan dikurangi ukuran array plus karakter $**) akan

ditempatkan di lokasi sesudah bagian akhir dari array tersebut. 7entu sa&a ke&adian seperti

ini bisa menimbulkan hal yang tidak diinginkan, misalnya berubahnya isi ariabel yang

dideklarasikan sesudah array tersebut karena tertumpuki oleh string yang dimasukkan

(oerwrite), atau perilaku program yang sama sekali berbeda dengan kemauan user yang

dalam hal ini pela%akan kesalahannya (debugging) sangat sulit dilakukan, atau bahkan ter&adi

 penghentian program se%ara tidak normal. ntuk mengatasi hal itu, disarankan untuk 

menggunakan 3ungsi 3gets()untuk menggantikan 3ungsi gets() dalam memasukkan data string.

entuk umum pemakaian 3gets() adalah :

#include !"di$h%

+&e"!nama(arra), !i-e+ nama(arra), !"din*;

Menampilkan Isi Variabel String

ntuk menampilkan isi ariabel string, 3ungsi yang digunakan adalah puts() atau print3().

entuk umum pemakaiannya adalah sebagai berikut :

#include !"di$h%.u"!/ar(!"rin&*;

a"au

.rin"+!,/ar(!"rin&*;

!alam hal ini ar4string adalah sebuah ariabel yang berupa sebuah array o3 %har. 9ungsi

 puts() akan menampilkan isi dari ar4string dan se%ara otomatis menambahkan karakter +n di

akhir string. Sedangkan 3ungsi print3() akan menampilkan isi ariabel string tanpa memberikan

tambahan +n. Sehingga, agar kedua pernyataan di atas memberikan keluaran yang sama,

maka pada pernyataan print3() dirubah men&adi :

.rin"+!\n, /ar(!"rin&*;

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 2

Page 3: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 3/17

. Tugas Penda!uluan

Soal 1 : Algoritma menggunakan berbagai input untuk string.

!eklarasikan teks;< sebagai array of char (String) dengan ukuran ='.

'. /asukkan teks"# dengan menggunakan s%an3().

>. 7ampilkan teks"#.

=. /asukkan teks"# dengan menggunakan gets().

?. 7ampilkan teks"#.

0. /asukkan teks"# dengan menggunakan 3gets() dengan batasan =' di parameternya.

@. 7ampilkan teks"#.

Soal 2 : Algoritma menghitung pan&ang String

!e3inisikan 3ungsi p$gstr%& sebagai 3ungsi bertipe bilangan bulat(int) dengan parameter array o3 

%har(String).

!eklarasikan teks;< sebagai array of char (String) dengan ukuran >00 dan $umKarakter sebagai

 bilangan bulat.

'. /asukkan kalimat ke teks;<.

>. Panggil 3ungsi p$gstr() dengan teks sebagai parameternya, simpan hasil keluaran 3ungsi di

 $umKarakter.

=. 7ampilkan $umKarakter.

Algoritma 'ungsi p$gstr%&

Posisikan nilai sesuatu;< sebagai teks;< dengan tipe array o3 %har.

!eklarasikan i sebagai bilangan bulat dengan nilai .

'. 8ika sesuatu;i< tidak sama dengan “+# maka lakukan langkah >, bila tidak langsung ke

langkah =.

>. $aikkan nilai i sebanyak ', kembali ke langkah '.

=. 6embalikan nilai i ke pemanggil.

Soal ( : Algoritma membalikkan urutan String

!e3inisikan 3ungsi balikstr() sebagai 3ungsi bertipe oid dengan parameter array o3 %har.

!e3iniskan pula p$gstr() sebagai 3ungsi bertipe bilangan bulat(int) dengan parameter array o3 

%har(String).

!eklarasikan teks;< sebagai array of char (String) dengan ukuran >00.

'. /asukkan kalimat ke teks;<

>. Panggil 3ungsi balikstr() dengan teks sebagai parameternya

=. 7ampilkan teks.

Algoritma 'ungsi balikstr%&

Posisikan sesuatu;< sebagai teks;< dengan tipe array o3 %har. !eklarasikan  i  dan  $  sebagai

 bilangan bulat(int). 2nisiasi nilai & dengan . !eklarasikan pula penampung;< sebagai array o3 %har(String) dengan ukuran >00.

'. Panggil 3ungsi p$gstr%& dengan sesuatu  sebagai parameternya. Simpan hasil keluaran 3ungsi

yan telah dikurangi dengan angka ' di i.

>. erikan salin nilai sesuatu;i< ke penampung;i<

=. $aikkan nilai $ sebanyak 'Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 3

Page 4: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 4/17

?. 7urunkan nilai i sebanyak '

0. 8ika i lebih dari atau sama dengan maka kembali ke langkah >, bila tidak maka ke langkah @

@. erikan nilai B+ kepada penampung;&<

. erikan nilai i dengan angka

D. erikan salin nilai penampung;i< ke sesuatu;i<

E. $aikkan nilai i sebanyak '

'. 8ika nilai i kurang dari $ maka kembali ke langkah D, bila tidak maka 3ungsi berhenti

Algoritma 'ungsi p$gstr%&

Posisikan nilai sesuatu;<sebagai teks;< dengan tipe array o3 %har.

!eklarasikan i sebagai bilangan bulat dengan nilai .

'. 8ika sesuatu;i< tidak sama dengan “+# maka lakukan langkah >, bila tidak langsung ke

langkah =.

>. $aikkan nilai i sebanyak ', kembali ke langkah '.

=. 6embalikan nilai i ke pemanggil.

Soal ) : Algoritma menyalin meng%opy String

!e3inisikan 3ungsi *op+str() sebagai 3ungsi bertipe oid dengan parameter array o3 %har.

!e3iniskan pula p$gstr() sebagai 3ungsi bertipe bilangan bulat(int) dengan parameter array o3 

%har(String).

!eklarasikan teks1;< dan teks2;< sebagai array of char (String) dengan ukuran >00.

'. /asukkan kalimat ke teks1;<.

>. Panggil 3ungsi balikstr() dengan teks1 dan teks2 sebagai parameternya.

=. 7ampilkan teks2;<.

Algoritma 'ungsi balikstr%&

Posisikan asal;< sebagai teks1;< dan tu$uan;< sebagai teks2;< dengan tipe array o3 %har.

!eklarasikan i sebagai bilangan bulat(int).

'. 2nisiasi nilai i dengan angka

>. erikan salin nilai asal;i< ke tu$uan;i<

=. $aikkan nilai i sebanyak '

?. Funakan 3ungsi p$gstr() untuk menghitung pan&ang karakter teks1. 8ika nilai i kurang dari

 pan&ang karakter tadi maka kembali ke langkah D, bila tidak maka 3ungsi berhenti.

Algoritma 'ungsi p$gstr%&

Posisikan nilai sesuatu;<sebagai teks;< dengan tipe array o3 %har.

!eklarasikan i sebagai bilangan bulat dengan nilai .

'. 8ika sesuatu;i< tidak sama dengan “+# maka lakukan langkah >, bila tidak langsung ke

langkah =.

>. $aikkan nilai i sebanyak ', kembali ke langkah '.

=. 6embalikan nilai i ke pemanggil.

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 4

Page 5: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 5/17

,. Per*obaan

'. *akukan per%obaan untuk menginputkan string dari keyboard dengan menggunakan

s%an3(), gets() dan 3gets(). Analisislah dan berikan kesimpulan untuk setiap 3ungsi tsb.

a. *isting Program#include !"di$h%

main*

{

char "e![21];

.rin"+3R46I78 91 :4< 1\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+8en&&unaan Cun&!i )an& Berai"an d&n :"rin&\n*;

.rin"+========================================== \n\n*;

.rin"+8en&&unaan !can+* \"= *;

!can+!,"e!*;

.rin"+Da!il in.u"an \"\"= !,"e!*;

++lu!h!"din*;

.rin"+\n\n8en&&unaan &e"!* \"= *;

&e"!"e!*;

.rin"+Da!il in.u"an \"\"= !,"e!*;

++lu!h!"din*;

.rin"+\n\n8en&&unaan +&e"!* \"= *;

+&e"!"e!, !i-e+ "e!, !"din*;

.rin"+Da!il in.u"an \"\"= !,"e!*;

++lu!h!"din*;

}

 b. Capture Program

%. Analisis Program

ntuk melakukan pemba%aan kalimat atau string yang dimasukkan se%ara manual oleh

user, ahasa C menyediakan = %ara menggunakan 3ungsi yang berbeda-beda.

9ungsi pertama adalah 3ungsi s*an'%&, keunggulan dari 3ungsi ini adalah inputan dapat

diperoleh sesuai 3ormat yang kita inginkan, namun kelemahannya 3ungsi ini tidak dapat

memba%a karakter setelah karakter spasi.

9ungsi kedua adalah 3ungsi gets%&- 3ungsi ini sangat mudah digunakan. 7inggal

memasukkan ariable array of char sebagai argumennya. $amun kelemahannya, 3ungsi

gets%& tidak menge%ek ukuran array dari stringnya. Sehingga berpotensi ter&adi oerloaded

yang berakibat data akan meluber ke address yang lain.

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 5

Page 6: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 6/17

!an 3ungsi yang ketiga serta terakhir adalah 'gets%&, 3ungsi %ukup ribet digunakan, namun

keuntungannya 3ungsi 'gets%& menge%ek ukuran array yang men&adi parameternya sehingga

oerloaded data tidak akan bisa ter&adi.

>. a. !e3inisikanlah sebuah 3ungsi untuk menghitung pan&ang dari string yang men&adi

 parameternya (misalnya : p&gstr())

 b. Pada 3ungsi main() terimalah input string yang akan dihitung pan&ang karakternya.

Selan&utnya panggil 3ungsi p&gstr() untuk mendapatkan pan&ang string dan tampilkan

hasilnya di main()

a. *isting Program#include !"di$h%

in" .E&!"rchar[]*;

main*

{

char "e![955];

.rin"+3R46I78 91 :4< 9\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+Cun&!i un"u men&hi"un& .anEan& :"rin&\n*;

.rin"+========================================== \n\n*;

.rin"+8a!uan alima" \"= *;

&e"!"e!*;

Eumara"er = .E&!"r"e!*;

.rin"+\n3anEan& ara"ern)a \"= d,Eumara"er*;

}

in" .E&!"rchar !e!ua"u[]*

{

in" i = 0;

 Fhile!e!ua"u[i]*

iGG;

re"urn i;

}

 b. Capture Program

%. Analisis Program

ntuk menghitung pan&ang String, perlu kita matangkan konsep bahwa string se&atinya

adalah array of char . Sehingga untuk menghitung pan&ang karakternya, kita dapat

melakukan looping dengan indeks seperti pada array. Gal yang %ukup penting disini adalah

setiap String selalu berakhiran dengan karakter B+. !engan adanya pembatas tersebut

 perhitungan karakter sangat mudah dilakukan yaitu hanya %ukup dengan melakukan serta

menghitung banyaknya looping pengulangan dari indeks ke- sampai bertemu dengan

karakter tersebut.

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 6

Page 7: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 7/17

=. a. Copy-lah program dari soal no >. !e3inisikanlah sebuah 3ungsi untuk membalik string yang

men&adi parameternya (misalnya : balikstr())

 b. Pada 3ungsi main() terimalah input string yang akan dihitung pan&ang karakternya dan

dibalik. Selan&utnya panggil 3ungsi p&gstr() dan balikstr()untuk mendapatkan kebalikan

dari string input dan tampilkan hasilnya di main()

a. *isting Program#include !"di$h%

in" .E&!"rchar[]*;

/id Hali!"rchar[]*;

main*

{

char "e![955];

in" Eumara"er=0,i;

.rin"+3R46I78 91 :4< 9\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+Cun&!i un"u memHalian :"rin&\n*;

.rin"+========================================= \n\n*;

.rin"+8a!uan alima" \"= *;

&e"!"e!*;

Hali!"r"e!*;

.rin"+Da!il .emHalian \"=!,"e!*;

}

in" .E&!"rchar !e!ua"u[]*

{in" i = 0;

 Fhile!e!ua"u[i]*

iGG;

re"urn i;

}

/id Hali!"rchar !e!ua"u[]*

{

in" i,E=0;

char .enam.un&[955];

+ri=.E&!"r!e!ua"u*1;i%=0;i*

{

.enam.un&[E] = !e!ua"u[i];

EGG;

}

.enam.un&[E] = '\0';

+ri=0;iEGG*

!e!ua"u[i] = .enam.un&[i];

}

 b. Capture Program

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 7

Page 8: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 8/17

%. Analisis Program

/embalik String berarti membalik urutan karakter-karakter di setiap indeksnya. ntuk 

melakukan hal tersebut, kita perlu sebuah String penampung yang digunakan untuk 

memindah karakter se%ara terbalik dari indeks yang paling besar. Setelah semua karakter 

 berhasil dibalik, kita %opy kembali String Penampung ke String asli sehingga String asli

 benar-benar terbalik karakternya.

?. a. Copy-lah program dari soal no >. !e3inisikanlah sebuah 3ungsi untuk membalik string yang

men&adi parameternya (misalnya : balikstr())

 b. Pada 3ungsi main() terimalah input string yang akan dihitung pan&ang karakternya dan

dibalik. Selan&utnya panggil 3ungsi p&gstr() dan balikstr()untuk mendapatkan kebalikan

dari string input dan tampilkan hasilnya di main()

a. *isting Program#include !"di$h%

in" .E&!"rchar[]*;

/id c.)!"rchar[],char[]*;

main*

{

char "e!1[955],"e!9[955];

in" Eumara"er=0;

.rin"+3R46I78 91 :4< A\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+Cun&!i un"u men&c.) :"rin&\n*;

.rin"+========================================== \n\n*;

.rin"+8a!uan alima" \"= *;

&e"!"e!1*;

c.)!"r"e!1,"e!9*;

.rin"+Da!il .en&c.)an \"= !,"e!9*;

}

in" .E&!"rchar !e!ua"u[]*

{

in" i = 0;

 Fhile!e!ua"u[i]*

iGG;

re"urn i;

}

/id c.)!"rchar a!al[],char "uEuan[]*

{

in" i;

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 8

Page 9: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 9/17

+ri=0;i.E&!"ra!al*G1;iGG*

"uEuan[i] = a!al[i];

}

 b. Capture Program

%. Analisis Program

/eng%opymenyalin string tidak dapat dilakukan se%ara langsung dengan operator 

assignment(H). Proses penyalinan harus dilakukan satu persatu tiap karakter yang ada padaString. Caranya dengan melakukan perulangan penyalinan karakter dengan urutan atau

indeks yang sama hingga menemui karakter B+ atau null. Gal yang perlu diperhatikan

disini adalah ukuran dari Sting yang di%opy dan String yang mau di-%opykan haruslah sama

sehingga tidak ter&adi loss data karena karakter gagal di-copy.

D. Kesimpulan

'. Pada hakikatnya, S712$F merupakan sekumpulan karakter, sehingga sebuah S712$F dapat

 pula kita panggil sebagai array of char .

>. ntuk memba%a data String dari user, kita dapat menggunakan 3ungsi scanf , gets atau fgets.=. Setiap string memiliki elemen tambahan B+ pada karakter terakhir sebagai penanda akhir dari

String tersebut.

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 9

Page 10: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 10/17

PRAKTIKUM 22

String 2

A. Dasar Teori

erikut ini akan dibahas beberapa 3ungsi pustaka yang umumnya disediakan oleh kompiler C

untuk mengoperasikan suatu nilai string. 9ungsi -3ungsi pustaka untuk operasi string, prototype-

 prototype nya berada di 3ile &udul string.h.

eberapa di antara 3ungsi pustaka untuk operasi string akan dibahas di bawah ini.

'. ungsi str*p+%& untuk Men+alin /ilai String

entuk pemakaian :

#include !"rin&$h%

!"rc.)"uEuan, a!al*9ungsi ini dipakai untuk menyalin string asal ke ariabel string tu&uan termasuk karakter +.

6eluaran dari 3ungsi ini (return alue) adalah string tu&uan. !alam hal ini, ariabel tu&uan haruslah

mempunyai ukuran yang dapat digunakan untuk menampung seluruh karakter dari string asal.

2. ungsi strlen%& untuk Mengeta!ui Pan$ang /ilai String

entuk pemakaian :

#include !"rin&$h%

!"rlen/ar(!"rin&*;

9ungsi ini digunakan untuk memperoleh banyaknya karakter di dalam string yang men&adi

argumennya (ar4string). 6eluaran dari 3ungsi ini adalah pan&ang dari ar4string. 6arakter $**

tidak ikut dihitung.

(. ungsi str*at%& untuk Menggabung /ilai String

entuk pemakaian :

#include !"rin&$h%

!"rca""uEuan, !umHer*;

/enggabungkan dua buah nilai string tidak dapat dilakukan dengan operator BI, karena operator 

ini bukan operator untuk operasi string. Penggabungan dua buah nilai string dapat dilakukan dengan

3ungsi pustaka str%at() dengan menambahkan string sumber ke bagian akhir dari string tu&uan.6eluaran dari 3ungsi ini adalah string tu&uan.

). ungsi str*mp%& untuk Membandingkan Dua /ilai String

/embandingkan dua nilai string &uga tidak dapat digunakan dengan operator hubungan, karena

operator tersebut tidak untuk operasi string. /embandingkan dua buah nilai string dapat dilakukan

dengan 3ungsi pustaka str%mp().

Contoh bentuk pemakaian 3ungsi :

#include !"rin&$h%

!"rcm.!"r1, !"r9*;

9ungsi ini dipakai untuk membandingkan string str' dengan string str>. 6eluaran dari 3ungsi ini

 bertipe int yang berupa nilai :

• -', &ika str' kurang dari str>

• , &ika str' sama dengan str>

• ', &ika str' lebih dari str>

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 10

Page 11: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 11/17

Pembandingan dilakukan untuk karakter pada posisi yang sama dari str' dan str>, dimulai dari

karakter terkiri. A%uan pembandingan dari dua buah karakter didasarkan oleh nilai ASC22-nya. /isal,

karakter BA lebih ke%il daripada B dan karakter B lebih ke%il daripada BC.

0. ungsi str*!r%& untuk Men*ari /ilai Karakter dalam String

entuk pemakaian

#include !"rin&$h%

!"rchr/ar(!"rin&, ar*;

9ungsi ini dapat digunakan untuk men%ari suatu nilai karakter yang berada dalam suatu nilai

string. !alam hal ini adalah men%ari karakter kar dalam string ar4string. 6eluaran dari 3ungsi ini

adalah alamat posisi dari karakter pertama pada nilai string, yang sama dengan karakter yang di%ari. 8ika

karakter yang di%ari tidak ada dalam nilai string, maka 3ungsi ini akan memberikan hasil nilai

 pointer kosong ($**).

. Tugas Penda!uluan

Soal 1 : Algoritma menggunakan berbagai input untuk string.!eklarasikan teks1;<,teks2;< dan !slalik ;< sebagai array of char (String) dengan ukuran >00.

'. /asukkan teks1;<.

>. 7ampilkan perhitungan pan&ang teks1 yang menggunkan 3ungsi strlen%&.

=. Panggil 3ungsi strre%& dengan teks1 sebagai parameternya.

?. 7ampilkan teks1;< yang telah dibalik tadi.

0. Panggil 3ungsi str*p+ dengan teks1 dan teks2 sebagai parameternya.

. 7ampilkan teks2"# sebagai hasil salinan dari teks1.

Soal 2 : Algoritma membandingkan > buah String se%ara ,AS3 S3/SITIV3.

!e3inisikan bandingstr1%& sebagai 3ungsi dengan tipe bilangan bulat(int) dengan parameter > buah

array o3 %har(String)

!eklarasikan teks1;< dan teks2;< sebagai array of char (String) dengan ukuran >00. !eklarasikan

 pula !slanding sebagai bilangan bulat(int)

'. /asukkan kalimat pertama (teks1;<)

>. /asukkan kalimat pertama (teks2;<)

=. Panggil 3ungsi bandingstr1() dengan teks1  dan teks2  sebagai parameternya. Simpan hasilkeluaran 3ungsi di !slanding.

?. 8ika !slanding sama dengan maka kedua teks tersebut sama bila bukan maka kedua teks

tersebut tidak sama.

Algoritma 'ungsi bandingstr1%&

Posisikan kal1;< dan kal2;< sebagai teks1"# dan teks2;<. !eklarasikan i dan sama sebagai bilangan

 bulat. 2nisiasi nilai sama dengan angka .

'. 2nisiasi nilai i dengan angka .

>. 8ika kal1;i< lebih dari kal2;i< maka lakukan langkah =, bila tidak langsung ke langkah ?.

=. erikan nilai ' kepada sama, break  langsung ke langkah D.

?. 8ika kal1;i< kurang dari kal2;i< maka lakukan langkah 0, bila tidak langsung ke langkah @.

0. erikan nilai -' kepada sama, break  langsung ke langkah D.

@. $aikkan nilai i sebanyak '.

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 11

Page 12: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 12/17

. 8ika i kurang dari pan&ang kal1 A7A i kurang dari pan&ang kal2 maka kembali ke langkah =

 bila tidak langsung ke langkah D.

D. 6embalikan nilai sama ke 3ungsi pemanggil.

Soal ( : Algoritma membandingkan > buah String se%ara I/,AS3 S3/SITIV3.

!e3inisikan bandingstr2() sebagai 3ungsi dengan tipe bilangan bulat(int) dengan parameter > buah

array o3 %har(String).

!eklarasikan teks1;< dan teks2;< sebagai array of char (String) dengan ukuran >00. !eklarasikan

 pula hslanding sebagai bilangan bulat(int)

'. /asukkan kalimat pertama (teks1;<).

>. /asukkan kalimat pertama (teks2;<).

=. Panggil 3ungsi bandingstr1%&  dengan teks1  dan teks2  sebagai parameternya. Simpan hasil

keluaran 3ungsi di !slanding.

?. 8ika !slanding sama dengan maka kedua teks tersebut sama bila bukan maka kedua teks

tersebut tidak sama.

Algoritma 'ungsi bandingstr2%&

Posisikan kal1;< dan kal2;< sebagai teks1 dan teks2;<. !eklarasikan i dan sama sebagai bilangan

 bulat. 2nisiasi nilai sama dengan angka .

'. 2nisiasi nilai i dengan angka .

>. 8ika kal1;i< lebih dari kal2;i< maka lakukan langkah =, bila tidak langsung ke langkah 0.

=. 8ika kal1;i< tidak sama dengan kal2;i< I => maka lakukan langkah ?, bila tidak langsung ke

langkah 0.

?. erikan nilai ' kepada sama, break  langsung ke langkah '.

0. 8ika kal1;i< kurang dari kal2;i< maka lakukan langkah @, bila tidak langsung ke langkah D.

@. 8ika kal1;i< tidak sama dengan kal2;i< I => maka lakukan langkah , bila tidak langsung ke

langkah D.

. erikan nilai -' kepada sama, break langsung ke langkah D.

D. $aikkan nilai i sebanyak '.

E. 8ika i kurang dari pan&ang kal1 A7A i kurang dari pan&ang kal2 maka kembali ke langkah =

 bila tidak langsung ke langkah D.

'. 6embalikan nilai sama ke 3ungsi pemanggil.

Soal ( : Algoritma per%obaan membandingkan dua buah String dengan str%mp() dan str%mpi().

!eklarasikan teks1;< dan teks2;< sebagai array of char (String) dengan ukuran >00. !eklarasikan

 pula !asil, dan !asil,i sebagai bilangan bulat(int).

'. /asukkan kalimat pertama (teks1;<)

>. /asukkan kalimat pertama (teks2;<)

=. Panggil 3ungsi str%mp dengan  teks1  dan teks2 sebagai parameternya. Simpan hasil keluaran

3ungsi di !asil,.

?. Panggil 3ungsi str%mpi dengan teks1 dan teks2 sebagai parameternya. Simpan hasil keluaran

3ungsi di !asil,i.

0. 8ika !asil, sama dengan maka tampilkan “Perbandingan menggunakan str%mp() menyatakan%o%ok# bila bukan maka tampilkan “Perbandingan menggunakan str%mp() menyatakan tidak 

%o%ok#

@. 8ika !asil,i  sama dengan maka tampilkan “Perbandingan menggunakan str%mpi()

menyatakan %o%ok# bila bukan maka tampilkan “Perbandingan menggunakan str%mpi()

menyatakan tidak %o%ok#.

,. Per*obaanLaporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 12

Page 13: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 13/17

'. langilah soal nomor >, = 5 ? pada modul prakt String ' dengan menggunakan 3ungsi-

3ungsi standard (built-in functions)

a. *isting Program

#include !"di$h%

#include !"rin&$h%

main*

{

char "e!1[955],"e!9[955],h!lBali[955];

.rin"+3R46I78 99 :4< 1\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+8en&&unaan Buil"in Cunc"in :"rin&\n*;

.rin"+========================================== \n\n*;

.rin"+8a!uan alima" \"= *;

&e"!"e!1*;

.rin"+\n3anEan& alima" \"= d ara"er,!"rlen"e!1**;

.rin"+\nDa!il 3emHalian \"= !,!"rre/"e!1**;

!"rc.)"e!9,"e!1*;

.rin"+\nDa!il 3enc.)an \"= !,"e!9*;

}

in" .E&!"rchar !e!ua"u[]*

{

in" i = 0;

 Fhile!e!ua"u[i]*

iGG;

re"urn i;

}

 b. Capture Program

%. Analisis Program

!i dalam bahasa C, sebenarnya telah disediakan 3ungsi bawaan atau built in function untuk 

melakukan operasi String. ntuk memanggilnya, yang pertama harus kita lakukan adalah

menyisipkan library string.h pada 3ile % yang kita buat. Selan&utnya, kita tinggal panggil

3ungsi yang kita butuhkan seperti 3ungsi adalah strlen(perhitungan karakter),str*p+(peng%opyan string), str*at(penggabungan string) dan str*mp(membandingkan

string).

>. a. !e3inisikanlah sebuah 3ungsi untuk membandingkan dua buah string yang men&adi

 parameternya se%ara CAS" S"$S272" (misalnya : bandingstr'())

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 13

Page 14: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 14/17

 b. Pada 3ungsi main() terimalah input > buah string yang akan dibandingkan. Selan&utnya

 panggil 3ungsi bandingstr'() untuk membandingkan kedua string tsb dan tampilkan hasilnya di

main()

a. *isting Program

#include !"di$h%

#include !"rin&$h%

in" Handin&!"r1char "e!1[955],char "e!9[955]*;

main*

{

char "e!1[955],"e!9[955];

in" h!lBandin&;

.rin"+3R46I78 99 :4< 9\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+8emHandin&an 9 :"rin& J4: :N:I6IK\n*;

.rin"+========================================== \n\n*;

.rin"+8a!uan alima" .er"ama\"= *;

&e"!"e!1*;

.rin"+8a!uan alima" edua\"\"= *;

&e"!"e!9*;

h!lBandin& = Handin&!"r1"e!1,"e!9*;

i+h!lBandin& == 0*

.rin"+\nlima" )an& anda ma!uan dia"a! :484*;

el!e

.rin"+\nalima" )an& anda ma!uan dia"a! 6I>4 :484*;

}

in" Handin&!"r1char al1[],char al9[]*

{

in" i,!ama = 0;

+ri=0;i!"rlenal1* ?? i!"rlenal9*;iGG*

{

i+al1[i] % al9[i]*

{

!ama = 1;

Hrea;

}

el!e i+al1[i] al9[i]*{

!ama = 1;

Hrea;

}

iGG;

}

re"urn !ama;

}

 b. Capture Program

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 14

Page 15: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 15/17

%. Analisis Program

/embandingkan dua buah string yang berbeda tidak dapat kita lakukan se%ara langsung

menggunakan operator (HH). $amun kita perlu membandingkan setiap karakter dalam String

se%ara satu persatu. 6arena dalam persoalan ini String dibandingkan se%ara CAS" S"$S272",

maka di dalam penge%ekan tiap karakter tinggal kita tinggal bandingkan sa&a, karena karakter 

harus sama persis baik untuk kapital maupun atau tidak. 8ika ada satu karakter sa&a yang tidak 

sama, maka bisa langsung diputuskan bahwa kedua String tersebut tidak sama. $amun &ika

sampai akhir String(+) karakter yang dibandingkan sama semua, maka kedua String tersebut

adalah sama.

=. a. !e3inisikanlah sebuah 3ungsi untuk membandingkan dua buah string yang men&adi

 parameternya se%ara $J$ CAS" S"$S272" (misalnya : bandingstr>())

 b. Pada 3ungsi main() terimalah input > buah string yang akan dibandingkan.. Selan&utnya

 panggil 3ungsi bandingstr>() untuk membandingkan kedua string tsb dan tampilkan hasilnya di

main()

a. *isting Program#include !"di$h%

#include !"rin&$h%

in" Handin&!"r9char "e!1[955],char "e!9[955]*;

main*

{

char "e!1[955],"e!9[955];

in" h!lBandin&;

.rin"+3R46I78 99 :4< 2\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+8emHandin&an 9 :"rin& INJ4: :N:6IK\n*;

.rin"+========================================== \n\n*;

.rin"+8a!uan alima" .er"ama\"= *;

&e"!"e!1*;

.rin"+8a!uan alima" edua\"\"= *;

&e"!"e!9*;

h!lBandin& = Handin&!"r9"e!1,"e!9*;

i+h!lBandin& == 0*

.rin"+\nalima" )an& anda ma!uan dia"a! :484*;

el!e

.rin"+\nalima" )an& anda ma!uan dia"a! 6I>4 :484*;

}

in" Handin&!"r9char al1[],char al9[]*

{

in" i,!ama = 0;

+ri=0;i!"rlenal1* ?? i!"rlenal9*;iGG*

{

i+al1[i] % al9[i]*

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 15

Page 16: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 16/17

{

i+al1[i] L= al9[i]G29*

{

!ama = 1;

Hrea;

}

}

el!e i+al1[i] al9[i]*

{

i+al1[i] L= al9[i]29*

{

!ama = 1;

Hrea;

}

}

}

re"urn !ama;

}

 b. Capture Program

%. Analisis Program

Sama halnya dengan soal no =, membandingkan dua buah string yang berbeda tidak dapat kita

lakukan se%ara langsung menggunakan operator (HH). $amun kita perlu membandingkan setiap

karakter dalam String se%ara satu persatu. Apalagi di soal no = ini String harus dibandingkan

se%ara 2$CAS" S"$S272" sehingga perbedaan huru3 kapital ataupun ke%il tidak dihiraukan.

ntuk melakukan hal ini, maka perlu kita ketahui bahwa konsep membandingkan karakter 

sebenarnya adalah membandingkan kode ASC22 dari karakter tersebut. 6ode ASC22 untuk 

huru3 kapital adalah @0 sampai dengan E, sedangkan huru3 ke%il adalah E sampai dengan

'>>, maka dari itu ada selisih => antara keduanya. !engan diketahui perbedaan selisih tadi,

maka dalam perbandingan tiap karakter selain membandingkan karakter yang sama persis,

 perlu diberi opsi apakah karakter tersebut sesuai dengan huru3 kapital atau ke%ilnya atau tidak dengan menggunakan selisih => tadi.

?. *akukan per%obaan untuk membandingkan > buah string dengan menggunakan 3ungsi

str%mp() dan str%mpi(). Analisislah dan berikan kesimpulan tentang perbedaan dan %ontoh

aplikasi untuk keduanya

a. *isting Program#include !"di$h%

#include !"rin&$h%

main*

{

char "e!1[955],"e!9[955];

in" ha!ilJ,ha!ilJi;

.rin"+3R46I78 99 :4< A\nRN>R4 ? 911012102@ ? 1>AI6B\n*;

.rin"+\n======================================== \n*;

.rin"+3erHedaan !"rcm.* dan !"rcm.i*\n*;

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 16

Page 17: Laporan Resmi 21-22  Konsep Pemrograman [String]

8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]

http://slidepdf.com/reader/full/laporan-resmi-21-22-konsep-pemrograman-string 17/17

.rin"+========================================== \n\n*;

.rin"+8a!uan alima" 1 \"= *;

&e"!"e!1*;

.rin"+8a!uan alima" 9 \"= *;

&e"!"e!9*;

ha!ilJ = !"rcm."e!1,"e!9*;

ha!ilJi = !"rcm.i"e!1,"e!9*;

i+ha!ilJ == 0*

.rin"+\n3erHandin&an men&&unaan !"rcm.* men)a"aan cc*;

el!e

.rin"+\n3erHandin&an men&&unaan !"rcm.* men)a"aan "ida cc*;

i+ha!ilJi == 0*

.rin"+\n3erHandin&an men&&unaan !"rcm.i* men)a"aan cc*;

el!e

.rin"+\n3erHandin&an men&&unaan !"rcm.i* men)a"aan "ida cc*;

}

 b. Capture Program

%. Analisis Program

7erdapat dua 3ungsi unuk membandingkan string dalam bahasa C, yaitu str*mp() dan

str*mpi(), konsep ker&a dan penggunaanya sebenarnya mirip dengan 3ungsi yang telah dibuat

 pada soal no = dan soal no ?.

str*mp() akan membandingkan S712$F se%ara CAS" S"$S272", yaitu membandingkan

String yang sama persis untuk huru3 %apital maupun huru3 ke%ilnya. Penerapannya nyatanya

adalah untuk membandingkan password yang dimasukkan user dengan password yang

tersimpan dalam sistem.

str*mpi() akan membandingkan S712$F se%ara 2$CAS" S"$S272", yaitu membandingkan

String tanpa menghiraukan huru3 besar maupun huru3 ke%ilnya. Penerapannya untuk membuat

3ungsi pen%arian data yang biasanya huru3 ke%il dan besar tidak dihiraukan.

D. Kesimpulan

'. !i dalam bahasa C, String yang merupakan array of char   dapat dikenai berbagai ma%am

operasi seperti pembalikan, penghitungan karakter, peng%opyan 3ile dsb.

>. ahasa C sendiri telah menyediakan built in function yang terdapat di library string.! =.  Built in function  untuk operasi String diantaranya adalah strlen% perhitungan karakter),

str*p+% peng%opyan string), str*at(penggabungan string) dan str*mp(membandingkan string).

?. ntuk membandingkan dua String apakah sama atau tidak, kita tidak bisa melakukannya

dengan operator(HH), namun harus menggunakan 3ungsi str*mp  untuk perbandingan String

CAS" S"$S272" dan str*mpi untuk perbandingan String se%ara 2$CAS" S"$S272".

Laporan Resmi Praktikum Konsep Pemrograman : String  |RENDRA BUDI HUTAMA

Halaman 17