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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [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
8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [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
8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]
/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
8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]
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.
!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
8/20/2019 Laporan Resmi 21-22 Konsep Pemrograman [String]
!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
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