• Tidak ada hasil yang ditemukan

Laporan Resmi 21-22 Konsep Pemrograman [String]

N/A
N/A
Protected

Academic year: 2021

Membagikan "Laporan Resmi 21-22 Konsep Pemrograman [String]"

Copied!
17
0
0

Teks penuh

(1)

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: “ABCDE” Nilai string ini disimpan dalam memori secara berurutan dengan komposisi seperti yang ditunjukkan pada gambar 17.1.

Setiap karakter akan menempati memori sebesar 1 byte. Byte terakhir otomatis akan berisi karakter NULL (\0). Dengan mengetahui bahwa suatu string diakhiri nilai NULL, maka akhir dari nilai suatu string akan dapat dideteksi. Sebagai sebuah array karakter, karakter pertama dari nilai string mempunyai indeks ke-0, karakter kedua mempunyai indeks ke-1, dan seterusnya.

Variabel String

Variabel string adalah variabel yang dipakai utuk menyimpan nilai string. Misalnya :

char name[15];

merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 15 karakter (termasuk karakter NULL). Deklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe char.

Inisialisasi String

Suatu variabel string dapat diinisialisasi seperti halnya array yang lain. Namun tentu saja elemen terakhirnya haruslah berupa karakter NULL. Sebagai contoh :

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

yang menyatakan bahwa name adalah variabel string dengan nilai awal berupa string : “RINI” . Bentuk inisialisasi yang lebih singkat :

char name[] = “RINI”;

Pada bentuk ini, karakter NULL tidak perlu ditulis. Secara implisit akan disisipkan oleh kompiler. Perlu diperhatikan, bila name dideklarasikan sebagai string, penugasan (assignment) suatu string ke variabel string seperti

(2)

Memasukkan Data String

Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi gets()atau scanf(). Bentuk umum pemakaiannya adalah sebagai berikut :

#include <stdio.h> gets(nama_array); atau #include <stdio.h> scanf(“%s”, nama_array); Perhatikan :

- nama_array adalah variabel bertipe array of char yang akan digunakan untuk menyimpan string masukan.

- Di depan nama_array tidak perlu ada operator & (operator alamat), karena nama_array tanpa kurung siku sudah menyatakan alamat yang ditempati oleh elemen pertama dari array tsb. - Kalau memakai scanf(), data string masukan tidak boleh mengandung spasi.

Perlu diketahui, fungsi gets() akan membaca seluruh karakter yang diketik melalui keyboard sampai tombol ENTER ditekan. Dalam hal ini tidak ada pengecekan terhadap batasan panjang array yang merupakan argumennya. Jika string yang dimasukkan melebihi ukuran array, maka sisa string (panjang string masukan dikurangi ukuran array plus karakter NULL) akan ditempatkan di lokasi sesudah bagian akhir dari array tersebut. Tentu saja kejadian seperti ini bisa menimbulkan hal yang tidak diinginkan, misalnya berubahnya isi variabel yang dideklarasikan sesudah array tersebut karena tertumpuki oleh string yang dimasukkan (overwrite), atau perilaku program yang sama sekali berbeda dengan kemauan user yang dalam hal ini pelacakan kesalahannya (debugging) sangat sulit dilakukan, atau bahkan terjadi penghentian program secara tidak normal. Untuk mengatasi hal itu, disarankan untuk menggunakan fungsi fgets()untuk menggantikan fungsi gets() dalam memasukkan data string. Bentuk umum pemakaian fgets() adalah :

#include <stdio.h>

fgets(nama_array, sizeof nama_array, stdin);

Menampilkan Isi Variabel String

Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau printf(). Bentuk umum pemakaiannya adalah sebagai berikut :

#include <stdio.h> puts(var_string); atau

printf("%s",var_string);

Dalam hal ini var_string adalah sebuah variabel yang berupa sebuah array of char. Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' di akhir string. Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa memberikan tambahan '\n'. Sehingga, agar kedua pernyataan di atas memberikan keluaran yang sama, maka pada pernyataan printf() dirubah menjadi :

(3)

B. Tugas Pendahuluan

Soal 1 : Algoritma menggunakan berbagai input untuk string.

Deklarasikan teks[] sebagai array of char(String) dengan ukuran 31. 1. Masukkan teks[] dengan menggunakan scanf().

2. Tampilkan teks[].

3. Masukkan teks[] dengan menggunakan gets(). 4. Tampilkan teks[].

5. Masukkan teks[] dengan menggunakan fgets() dengan batasan 31 di parameternya. 6. Tampilkan teks[].

Soal 2 : Algoritma menghitung panjang String

Definisikan fungsi pjgstr() sebagai fungsi bertipe bilangan bulat(int) dengan parameter array of char(String).

Deklarasikan teks[] sebagai array of char(String) dengan ukuran 255 dan jumKarakter sebagai bilangan bulat.

1. Masukkan kalimat ke teks[].

2. Panggil fungsi pjgstr() dengan teks sebagai parameternya, simpan hasil keluaran fungsi di

jumKarakter.

3. Tampilkan jumKarakter.

Algoritma fungsi pjgstr()

Posisikan nilai sesuatu[] sebagai teks[] dengan tipe array of char. Deklarasikan i sebagai bilangan bulat dengan nilai 0.

1. Jika sesuatu[i] tidak sama dengan “\0” maka lakukan langkah 2, bila tidak langsung ke langkah 3.

2. Naikkan nilai i sebanyak 1, kembali ke langkah 1. 3. Kembalikan nilai i ke pemanggil.

Soal 3 : Algoritma membalikkan urutan String

Definisikan fungsi balikstr() sebagai fungsi bertipe void dengan parameter array of char. Definiskan pula pjgstr() sebagai fungsi bertipe bilangan bulat(int) dengan parameter array of char(String).

Deklarasikan teks[] sebagai array of char(String) dengan ukuran 255. 1. Masukkan kalimat ke teks[]

2. Panggil fungsi balikstr() dengan teks sebagai parameternya 3. Tampilkan teks.

Algoritma fungsi balikstr()

Posisikan sesuatu[] sebagai teks[] dengan tipe array of char. Deklarasikan i dan j sebagai bilangan bulat(int). Inisiasi nilai j dengan 0. Deklarasikan pula penampung[] sebagai array of char(String) dengan ukuran 255.

1. Panggil fungsi pjgstr() dengan sesuatu sebagai parameternya. Simpan hasil keluaran fungsi yan telah dikurangi dengan angka 1 di i.

(4)

4. Turunkan nilai i sebanyak 1

5. Jika i lebih dari atau sama dengan 0 maka kembali ke langkah 2, bila tidak maka ke langkah 6 6. Berikan nilai ‘\0’ kepada penampung[j]

7. Berikan nilai i dengan angka 0

8. Berikan / salin nilai penampung[i] ke sesuatu[i] 9. Naikkan nilai i sebanyak 1

10. Jika nilai i kurang dari j maka kembali ke langkah 8, bila tidak maka fungsi berhenti

Algoritma fungsi pjgstr()

Posisikan nilai sesuatu[]sebagai teks[] dengan tipe array of char. Deklarasikan i sebagai bilangan bulat dengan nilai 0.

1. Jika sesuatu[i] tidak sama dengan “\0” maka lakukan langkah 2, bila tidak langsung ke langkah 3.

2. Naikkan nilai i sebanyak 1, kembali ke langkah 1. 3. Kembalikan nilai i ke pemanggil.

Soal 4 : Algoritma menyalin / mengcopy String

Definisikan fungsi copystr() sebagai fungsi bertipe void dengan parameter array of char. Definiskan pula pjgstr() sebagai fungsi bertipe bilangan bulat(int) dengan parameter array of char(String).

Deklarasikan teks1[] dan teks2[] sebagai array of char(String) dengan ukuran 255. 1. Masukkan kalimat ke teks1[].

2. Panggil fungsi balikstr() dengan teks1 dan teks2 sebagai parameternya. 3. Tampilkan teks2[].

Algoritma fungsi balikstr()

Posisikan asal[] sebagai teks1[] dan tujuan[] sebagai teks2[] dengan tipe array of char. Deklarasikan i sebagai bilangan bulat(int).

1. Inisiasi nilai i dengan angka 0

2. Berikan / salin nilai asal[i] ke tujuan[i] 3. Naikkan nilai i sebanyak 1

4. Gunakan fungsi pjgstr() untuk menghitung panjang karakter teks1. Jika nilai i kurang dari panjang karakter tadi maka kembali ke langkah 8, bila tidak maka fungsi berhenti.

Algoritma fungsi pjgstr()

Posisikan nilai sesuatu[]sebagai teks[] dengan tipe array of char. Deklarasikan i sebagai bilangan bulat dengan nilai 0.

1. Jika sesuatu[i] tidak sama dengan “\0” maka lakukan langkah 2, bila tidak langsung ke langkah 3.

2. Naikkan nilai i sebanyak 1, kembali ke langkah 1. 3. Kembalikan nilai i ke pemanggil.

(5)

C. Percobaan

1. Lakukan percobaan untuk menginputkan string dari keyboard dengan menggunakan scanf(), gets() dan fgets(). Analisislah dan berikan kesimpulan untuk setiap fungsi tsb. a. Listing Program

#include <stdio.h> main()

{

char teks[31];

printf("PRAKTIKUM 21 SOAL 1\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Menggunakan Fungsi yang Berkaitan dgn String\n"); printf("========================================== \n\n"); printf("Menggunkaan scanf() \t= ");

scanf("%s",teks);

printf("Hasil inputan \t\t= %s",teks); fflush(stdin);

printf("\n\nMenggunkaan gets() \t= "); gets(teks);

printf("Hasil inputan \t\t= %s",teks); fflush(stdin);

printf("\n\nMenggunkaan fgets() \t= "); fgets(teks, sizeof teks, stdin);

printf("Hasil inputan \t\t= %s",teks); fflush(stdin);

}

b. Capture Program

c. Analisis Program

Untuk melakukan pembacaan kalimat atau string yang dimasukkan secara manual oleh user, Bahasa C menyediakan 3 cara menggunakan fungsi yang berbeda-beda.

Fungsi pertama adalah fungsi scanf(), keunggulan dari fungsi ini adalah inputan dapat diperoleh sesuai format yang kita inginkan, namun kelemahannya fungsi ini tidak dapat membaca karakter setelah karakter spasi.

Fungsi kedua adalah fungsi gets(), fungsi ini sangat mudah digunakan. Tinggal memasukkan variable array of char sebagai argumennya. Namun kelemahannya, fungsi

gets() tidak mengecek ukuran array dari stringnya. Sehingga berpotensi terjadi overloaded

(6)

Dan fungsi yang ketiga serta terakhir adalah fgets(), fungsi cukup ribet digunakan, namun keuntungannya fungsi fgets() mengecek ukuran array yang menjadi parameternya sehingga overloaded data tidak akan bisa terjadi.

2. a. Definisikanlah sebuah fungsi untuk menghitung panjang dari string yang menjadi parameternya (misalnya : pjgstr())

b. Pada fungsi main() terimalah input string yang akan dihitung panjang karakternya. Selanjutnya panggil fungsi pjgstr() untuk mendapatkan panjang string dan tampilkan hasilnya di main() a. Listing Program #include <stdio.h> int pjgstr(char[]); main() { char teks[255];

printf("PRAKTIKUM 21 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Fungsi untuk menghitung panjang String\n");

printf("========================================== \n\n"); printf("Masukkan kalimat \t= ");

gets(teks);

jumKarakter = pjgstr(teks);

printf("\nPanjang karakternya \t= %d",jumKarakter); }

int pjgstr(char sesuatu[]) { int i = 0; while(sesuatu[i]) i++; return i; } b. Capture Program c. Analisis Program

Untuk menghitung panjang String, perlu kita matangkan konsep bahwa string sejatinya adalah array of char. Sehingga untuk menghitung panjang karakternya, kita dapat melakukan looping dengan indeks seperti pada array. Hal yang cukup penting disini adalah setiap String selalu berakhiran dengan karakter ‘\0’. Dengan adanya pembatas tersebut perhitungan karakter sangat mudah dilakukan yaitu hanya cukup dengan melakukan serta menghitung banyaknya looping / pengulangan dari indeks ke-0 sampai bertemu dengan karakter tersebut.

(7)

3. a. Copy-lah program dari soal no 2. Definisikanlah sebuah fungsi untuk membalik string yang menjadi parameternya (misalnya : balikstr())

b. Pada fungsi main() terimalah input string yang akan dihitung panjang karakternya dan dibalik. Selanjutnya panggil fungsi pjgstr() dan balikstr()untuk mendapatkan kebalikan dari string input dan tampilkan hasilnya di main()

a. Listing Program #include <stdio.h> int pjgstr(char[]); void balikstr(char[]); main() { char teks[255]; int jumKarakter=0,i;

printf("PRAKTIKUM 21 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Fungsi untuk membalikkan String\n");

printf("========================================= \n\n");

printf("Masukkan kalimat \t= "); gets(teks);

balikstr(teks);

printf("Hasil pembalikan \t=%s",teks); }

int pjgstr(char sesuatu[]) { int i = 0; while(sesuatu[i]) i++; return i; }

void balikstr(char sesuatu[]) { int i,j=0; char penampung[255]; for(i=pjgstr(sesuatu)-1;i>=0;i--) { penampung[j] = sesuatu[i]; j++; } penampung[j] = '\0'; for(i=0;i<j++) sesuatu[i] = penampung[i]; } b. Capture Program

(8)

c. Analisis Program

Membalik String berarti membalik urutan karakter-karakter di setiap indeksnya. Untuk melakukan hal tersebut, kita perlu sebuah String penampung yang digunakan untuk memindah karakter secara terbalik dari indeks yang paling besar. Setelah semua karakter berhasil dibalik, kita copy kembali String Penampung ke String asli sehingga String asli benar-benar terbalik karakternya.

4. a. Copy-lah program dari soal no 2. Definisikanlah sebuah fungsi untuk membalik string yang menjadi parameternya (misalnya : balikstr())

b. Pada fungsi main() terimalah input string yang akan dihitung panjang karakternya dan dibalik. Selanjutnya panggil fungsi pjgstr() dan balikstr()untuk mendapatkan kebalikan dari string input dan tampilkan hasilnya di main()

a. Listing Program #include <stdio.h> int pjgstr(char[]); void copystr(char[],char[]); main() { char teks1[255],teks2[255]; int jumKarakter=0;

printf("PRAKTIKUM 21 SOAL 4\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Fungsi untuk mengcopy String\n");

printf("========================================== \n\n");

printf("Masukkan kalimat \t= "); gets(teks1);

copystr(teks1,teks2);

printf("Hasil pengcopyan \t= %s",teks2); }

int pjgstr(char sesuatu[]) { int i = 0; while(sesuatu[i]) i++; return i; }

void copystr(char asal[],char tujuan[]) {

(9)

for(i=0;i<pjgstr(asal)+1;i++) tujuan[i] = asal[i]; }

b. Capture Program

c. Analisis Program

Mengcopy/menyalin string tidak dapat dilakukan secara langsung dengan operator assignment(=). Proses penyalinan harus dilakukan satu persatu tiap karakter yang ada pada String. Caranya dengan melakukan perulangan penyalinan karakter dengan urutan atau indeks yang sama hingga menemui karakter ‘\0’ atau null. Hal yang perlu diperhatikan disini adalah ukuran dari Sting yang dicopy dan String yang mau di-copykan haruslah sama sehingga tidak terjadi loss data karena karakter gagal di-copy.

D. Kesimpulan

1. Pada hakikatnya, STRING merupakan sekumpulan karakter, sehingga sebuah STRING dapat pula kita panggil sebagai array of char.

2. Untuk membaca data String dari user, kita dapat menggunakan fungsi scanf, gets atau fgets. 3. Setiap string memiliki elemen tambahan ‘\0’ pada karakter terakhir sebagai penanda akhir dari

(10)

PRAKTIKUM 22

String 2

A. Dasar Teori

Berikut ini akan dibahas beberapa fungsi pustaka yang umumnya disediakan oleh kompiler C untuk mengoperasikan suatu nilai string. Fungsi -fungsi pustaka untuk operasi string, prototype-prototype nya berada di file judul string.h.

Beberapa di antara fungsi pustaka untuk operasi string akan dibahas di bawah ini. 1. Fungsi strcpy() untuk Menyalin Nilai String

Bentuk pemakaian :

#include <string.h> strcpy(tujuan, asal)

Fungsi ini dipakai untuk menyalin string asal ke variabel string tujuan termasuk karakter '\0'. Keluaran dari fungsi ini (return value) adalah string tujuan. Dalam hal ini, variabel tujuan haruslah mempunyai ukuran yang dapat digunakan untuk menampung seluruh karakter dari string asal.

2. Fungsi strlen() untuk Mengetahui Panjang Nilai String

Bentuk pemakaian :

#include <string.h> strlen(var_string);

Fungsi ini digunakan untuk memperoleh banyaknya karakter di dalam string yang menjadi argumennya (var_string). Keluaran dari fungsi ini adalah panjang dari var_string. Karakter NULL tidak ikut dihitung.

3. Fungsi strcat() untuk Menggabung Nilai String

Bentuk pemakaian :

#include <string.h> strcat(tujuan, sumber);

Menggabungkan dua buah nilai string tidak dapat dilakukan dengan operator ‘+’, karena operator ini bukan operator untuk operasi string. Penggabungan dua buah nilai string dapat dilakukan dengan fungsi pustaka strcat() dengan menambahkan string sumber ke bagian akhir dari string tujuan. Keluaran dari fungsi ini adalah string tujuan.

4. Fungsi strcmp() untuk Membandingkan Dua Nilai String

Membandingkan dua nilai string juga tidak dapat digunakan dengan operator hubungan, karena operator tersebut tidak untuk operasi string. Membandingkan dua buah nilai string dapat dilakukan dengan fungsi pustaka strcmp().

Contoh bentuk pemakaian fungsi :

#include <string.h> strcmp(str1, str2);

Fungsi ini dipakai untuk membandingkan string str1 dengan string str2. Keluaran dari fungsi ini bertipe int yang berupa nilai :

 -1, jika str1 kurang dari str2

 0, jika str1 sama dengan str2

(11)

Pembandingan dilakukan untuk karakter pada posisi yang sama dari str1 dan str2, dimulai dari karakter terkiri. Acuan pembandingan dari dua buah karakter didasarkan oleh nilai ASCII-nya. Misal, karakter ‘A’ lebih kecil daripada ‘B’ dan karakter ‘B lebih kecil daripada ‘C’.

5. Fungsi strchr() untuk Mencari Nilai Karakter dalam String

Bentuk pemakaian

#include <string.h> strchr(var_string, kar);

Fungsi ini dapat digunakan untuk mencari suatu nilai karakter yang berada dalam suatu nilai string. Dalam hal ini adalah mencari karakter kar dalam string var_string. Keluaran dari fungsi ini adalah alamat posisi dari karakter pertama pada nilai string, yang sama dengan karakter yang dicari. Jika karakter yang dicari tidak ada dalam nilai string, maka fungsi ini akan memberikan hasil nilai pointer kosong (NULL).

B. Tugas Pendahuluan

Soal 1 : Algoritma menggunakan berbagai input untuk string.

Deklarasikan teks1[],teks2[] dan hslBalik[] sebagai array of char(String) dengan ukuran 255. 1. Masukkan teks1[].

2. Tampilkan perhitungan panjang teks1 yang menggunkan fungsi strlen(). 3. Panggil fungsi strrev() dengan teks1 sebagai parameternya.

4. Tampilkan teks1[] yang telah dibalik tadi.

5. Panggil fungsi strcpy dengan teks1 dan teks2 sebagai parameternya.

6.

Tampilkan teks2[] sebagai hasil salinan dari teks1.

Soal 2 : Algoritma membandingkan 2 buah String secara CASE SENSITIVE.

Definisikan bandingstr1() sebagai fungsi dengan tipe bilangan bulat(int) dengan parameter 2 buah array of char(String)

Deklarasikan teks1[] dan teks2[] sebagai array of char(String) dengan ukuran 255. Deklarasikan pula hslBanding sebagai bilangan bulat(int)

1. Masukkan kalimat pertama (teks1[]) 2. Masukkan kalimat pertama (teks2[])

3. Panggil fungsi bandingstr1() dengan teks1 dan teks2 sebagai parameternya. Simpan hasil keluaran fungsi di hslBanding.

4. Jika hslBanding sama dengan 0 maka kedua teks tersebut sama bila bukan 0 maka kedua teks tersebut tidak sama.

Algoritma fungsi bandingstr1()

Posisikan kal1[] dan kal2[] sebagai teks1[] dan teks2[]. Deklarasikan i dan sama sebagai bilangan bulat. Inisiasi nilai sama dengan angka 0.

1. Inisiasi nilai i dengan angka 0.

2. Jika kal1[i] lebih dari kal2[i] maka lakukan langkah 3, bila tidak langsung ke langkah 4. 3. Berikan nilai 1 kepada sama, break langsung ke langkah 8.

4. Jika kal1[i] kurang dari kal2[i] maka lakukan langkah 5, bila tidak langsung ke langkah 6. 5. Berikan nilai -1 kepada sama, break langsung ke langkah 8.

(12)

7. Jika i kurang dari panjang kal1 ATAU i kurang dari panjang kal2 maka kembali ke langkah 3 bila tidak langsung ke langkah 8.

8. Kembalikan nilai sama ke fungsi pemanggil.

Soal 3 : Algoritma membandingkan 2 buah String secara INCASE SENSITIVE.

Definisikan bandingstr2() sebagai fungsi dengan tipe bilangan bulat(int) dengan parameter 2 buah array of char(String).

Deklarasikan teks1[] dan teks2[] sebagai array of char(String) dengan ukuran 255. Deklarasikan pula hslBanding sebagai bilangan bulat(int)

1. Masukkan kalimat pertama (teks1[]). 2. Masukkan kalimat pertama (teks2[]).

3. Panggil fungsi bandingstr1() dengan teks1 dan teks2 sebagai parameternya. Simpan hasil keluaran fungsi di hslBanding.

4. Jika hslBanding sama dengan 0 maka kedua teks tersebut sama bila bukan 0 maka kedua teks tersebut tidak sama.

Algoritma fungsi bandingstr2()

Posisikan kal1[] dan kal2[] sebagai teks1 dan teks2[]. Deklarasikan i dan sama sebagai bilangan bulat. Inisiasi nilai sama dengan angka 0.

1. Inisiasi nilai i dengan angka 0.

2. Jika kal1[i] lebih dari kal2[i] maka lakukan langkah 3, bila tidak langsung ke langkah 5. 3. Jika kal1[i] tidak sama dengan kal2[i] + 32 maka lakukan langkah 4, bila tidak langsung ke

langkah 5.

4. Berikan nilai 1 kepada sama, break langsung ke langkah 10.

5. Jika kal1[i] kurang dari kal2[i] maka lakukan langkah 6, bila tidak langsung ke langkah 8. 6. Jika kal1[i] tidak sama dengan kal2[i] + 32 maka lakukan langkah 7, bila tidak langsung ke

langkah 8.

7. Berikan nilai -1 kepada sama, break langsung ke langkah 8. 8. Naikkan nilai i sebanyak 1.

9. Jika i kurang dari panjang kal1 ATAU i kurang dari panjang kal2 maka kembali ke langkah 3 bila tidak langsung ke langkah 8.

10. Kembalikan nilai sama ke fungsi pemanggil.

Soal 3 : Algoritma percobaan membandingkan dua buah String dengan strcmp() dan strcmpi().

Deklarasikan teks1[] dan teks2[] sebagai array of char(String) dengan ukuran 255. Deklarasikan pula hasilC dan hasilCi sebagai bilangan bulat(int).

1. Masukkan kalimat pertama (teks1[]) 2. Masukkan kalimat pertama (teks2[])

3. Panggil fungsi strcmp dengan teks1 dan teks2 sebagai parameternya. Simpan hasil keluaran fungsi di hasilC.

4. Panggil fungsi strcmpi dengan teks1 dan teks2 sebagai parameternya. Simpan hasil keluaran fungsi di hasilCi.

5. Jika hasilC sama dengan 0 maka tampilkan “Perbandingan menggunakan strcmp() menyatakan cocok” bila bukan maka tampilkan “Perbandingan menggunakan strcmp() menyatakan tidak cocok”

6. Jika hasilCi sama dengan 0 maka tampilkan “Perbandingan menggunakan strcmpi() menyatakan cocok” bila bukan maka tampilkan “Perbandingan menggunakan strcmpi() menyatakan tidak cocok”.

(13)

1. Ulangilah soal nomor 2, 3 & 4 pada modul prakt String 1 dengan menggunakan fungsi-fungsi standard (built-in functions)

a. Listing Program #include <stdio.h> #include <string.h> main() { char teks1[255],teks2[255],hslBalik[255];

printf("PRAKTIKUM 22 SOAL 1\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Menggunakan Built-in Function String\n");

printf("========================================== \n\n"); printf("Masukkan kalimat \t= ");

gets(teks1);

printf("\nPanjang kalimat \t= %d karakter",strlen(teks1)); printf("\nHasil Pembalikan \t= %s",strrev(teks1));

strcpy(teks2,teks1);

printf("\nHasil Pencopyan \t= %s",teks2); }

int pjgstr(char sesuatu[]) { int i = 0; while(sesuatu[i]) i++; return i; } b. Capture Program c. Analisis Program

Di dalam bahasa C, sebenarnya telah disediakan fungsi bawaan atau built in function untuk melakukan operasi String. Untuk memanggilnya, yang pertama harus kita lakukan adalah menyisipkan library string.h pada file c yang kita buat. Selanjutnya, kita tinggal panggil fungsi yang kita butuhkan seperti fungsi adalah strlen(perhitungan karakter),

strcpy(pengcopyan string), strcat(penggabungan string) dan strcmp(membandingkan

(14)

b. Pada fungsi main() terimalah input 2 buah string yang akan dibandingkan. Selanjutnya panggil fungsi bandingstr1() untuk membandingkan kedua string tsb dan tampilkan hasilnya di main()

a. Listing Program

#include <stdio.h> #include <string.h>

int bandingstr1(char teks1[255],char teks2[255]); main()

{

char teks1[255],teks2[255]; int hslBanding;

printf("PRAKTIKUM 22 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Membandingkan 2 String CASE SENSITIVE\n");

printf("========================================== \n\n"); printf("Masukkan kalimat pertama\t= ");

gets(teks1);

printf("Masukkan kalimat kedua\t\t= "); gets(teks2);

hslBanding = bandingstr1(teks1,teks2); if(hslBanding == 0)

printf("\nkKlimat yang anda masukkan diatas SAMA"); else

printf("\nKalimat yang anda masukkan diatas TIDAK SAMA"); }

int bandingstr1(char kal1[],char kal2[]) { int i,sama = 0; for(i=0;i<strlen(kal1) || i<strlen(kal2);i++) { if(kal1[i] > kal2[i]) { sama = 1; break; }

else if(kal1[i] < kal2[i]) { sama = -1; break; } i++; } return sama; } b. Capture Program

(15)

c. Analisis Program

Membandingkan dua buah string yang berbeda tidak dapat kita lakukan secara langsung menggunakan operator (==). Namun kita perlu membandingkan setiap karakter dalam String secara satu persatu. Karena dalam persoalan ini String dibandingkan secara CASE SENSITIVE, maka di dalam pengecekan tiap karakter tinggal kita tinggal bandingkan saja, karena karakter harus sama persis baik untuk kapital maupun atau tidak. Jika ada satu karakter saja yang tidak sama, maka bisa langsung diputuskan bahwa kedua String tersebut tidak sama. Namun jika sampai akhir String(\0) karakter yang dibandingkan sama semua, maka kedua String tersebut adalah sama.

3. a. Definisikanlah sebuah fungsi untuk membandingkan dua buah string yang menjadi parameternya secara NON CASE SENSITIVE (misalnya : bandingstr2())

b. Pada fungsi main() terimalah input 2 buah string yang akan dibandingkan.. Selanjutnya panggil fungsi bandingstr2() untuk membandingkan kedua string tsb dan tampilkan hasilnya di main()

a. Listing Program

#include <stdio.h> #include <string.h>

int bandingstr2(char teks1[255],char teks2[255]); main()

{

char teks1[255],teks2[255]; int hslBanding;

printf("PRAKTIKUM 22 SOAL 3\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

printf("Membandingkan 2 String INCASE SENSTIVE\n");

printf("========================================== \n\n"); printf("Masukkan kalimat pertama\t= ");

gets(teks1);

printf("Masukkan kalimat kedua\t\t= "); gets(teks2);

hslBanding = bandingstr2(teks1,teks2); if(hslBanding == 0)

printf("\nKalimat yang anda masukkan diatas SAMA"); else

printf("\nKalimat yang anda masukkan diatas TIDAK SAMA"); }

int bandingstr2(char kal1[],char kal2[]) {

(16)

{ if(kal1[i] != kal2[i]+32) { sama = 1; break; } }

else if(kal1[i] < kal2[i]) { if(kal1[i] != kal2[i]-32) { sama = -1; break; } } } return sama; } b. Capture Program c. Analisis Program

Sama halnya dengan soal no 3, membandingkan dua buah string yang berbeda tidak dapat kita lakukan secara langsung menggunakan operator (==). Namun kita perlu membandingkan setiap karakter dalam String secara satu persatu. Apalagi di soal no 3 ini String harus dibandingkan secara INCASE SENSITIVE sehingga perbedaan huruf kapital ataupun kecil tidak dihiraukan. Untuk melakukan hal ini, maka perlu kita ketahui bahwa konsep membandingkan karakter sebenarnya adalah membandingkan kode ASCII dari karakter tersebut. Kode ASCII untuk huruf kapital adalah 65 sampai dengan 90, sedangkan huruf kecil adalah 97 sampai dengan 122, maka dari itu ada selisih 32 antara keduanya. Dengan diketahui perbedaan selisih tadi, maka dalam perbandingan tiap karakter selain membandingkan karakter yang sama persis, perlu diberi opsi apakah karakter tersebut sesuai dengan huruf kapital atau kecilnya atau tidak dengan menggunakan selisih 32 tadi.

4. Lakukan percobaan untuk membandingkan 2 buah string dengan menggunakan fungsi strcmp() dan strcmpi(). Analisislah dan berikan kesimpulan tentang perbedaan dan contoh aplikasi untuk keduanya

a. Listing Program #include <stdio.h> #include <string.h> main() { char teks1[255],teks2[255]; int hasilC,hasilCi;

printf("PRAKTIKUM 22 SOAL 4\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n");

(17)

printf("========================================== \n\n"); printf("Masukkan kalimat 1 \t= "); gets(teks1); printf("Masukkan kalimat 2 \t= "); gets(teks2); hasilC = strcmp(teks1,teks2); hasilCi = strcmpi(teks1,teks2); if(hasilC == 0)

printf("\nPerbandingan menggunakan strcmp() menyatakan cocok"); else

printf("\nPerbandingan menggunakan strcmp() menyatakan tidak cocok"); if(hasilCi == 0)

printf("\nPerbandingan menggunakan strcmpi() menyatakan cocok"); else

printf("\nPerbandingan menggunakan strcmpi() menyatakan tidak cocok"); }

b. Capture Program

c. Analisis Program

Terdapat dua fungsi unuk membandingkan string dalam bahasa C, yaitu strcmp() dan

strcmpi(), konsep kerja dan penggunaanya sebenarnya mirip dengan fungsi yang telah dibuat

pada soal no 3 dan soal no 4.

strcmp() akan membandingkan STRING secara CASE SENSITIVE, yaitu membandingkan

String yang sama persis untuk huruf capital maupun huruf kecilnya. Penerapannya nyatanya adalah untuk membandingkan password yang dimasukkan user dengan password yang tersimpan dalam sistem.

strcmpi() akan membandingkan STRING secara INCASE SENSITIVE, yaitu membandingkan

String tanpa menghiraukan huruf besar maupun huruf kecilnya. Penerapannya untuk membuat fungsi pencarian data yang biasanya huruf kecil dan besar tidak dihiraukan.

D. Kesimpulan

1. Di dalam bahasa C, String yang merupakan array of char dapat dikenai berbagai macam operasi seperti pembalikan, penghitungan karakter, pengcopyan file dsb.

2. Bahasa C sendiri telah menyediakan built in function yang terdapat di library string.h

3. Built in function untuk operasi String diantaranya adalah strlen(perhitungan karakter),

strcpy(pengcopyan string), strcat(penggabungan string) dan strcmp(membandingkan string).

4. Untuk membandingkan dua String apakah sama atau tidak, kita tidak bisa melakukannya dengan operator(==), namun harus menggunakan fungsi strcmp untuk perbandingan String

Referensi

Dokumen terkait

Mengetahui hubungan antara kebiasaan berada di luar rumah pada malam hari dengan kejadian malaria diwilayah kerja Puskesmas Tarusan tahun 2011.. Mengetahui hubungan

Secara umum Pusat Baralek IKGS ini akan menyediakan berbagai fasilitas yang dapat memenuhi segala keperluan itu, dimulai dari keperluan yang menyediakan toko – toko yang

4.230.000,- yaitu merupakan kawasan pemukiman (Bangunan/Pekarangan) yang mempunyai fasilitas umum seperti sekolahan, pasar dan komplek perumahan, sehingga kenaikan harganya

1) Kangkung sutera dapat ditanam bersamaan dengan waktu tanam jagung manis, sampai dengan tiga minggu setelah tanam jagung manis. 2) Hasil jagung manis tidak

Sedangkan perangkat lunak yang dibutuhkan untuk membangun maupun menjalankan sistem pengawasan penggunaan smartphone android menggunakan API Clarifai, spesifikasi perangkat

 Pada halaman menu utama, penulis mengambil tema rumah dengan dua buah jendela sebagai papan navigasi menuju ke permainan flash card benda peralatan rumah

Tujuan dari penelitian ini adalah untuk menganalisa perubahan lahan dan perubahan iklim yang terjadi di Kecamatan Jumantono serta ada tidaknya korelasi alih fungsi lahan

Gambar 9 Perkebunan teh biasa diusahakan di daerah pegunungan yang berhawa sejuk... Pak Tatang tinggal di kompleks perumahan. Namanya Peru- mahan Pondok Permai. Pak Tatang