Download Laporan Resmi 21-22 Konsep Pemrograman [String] PDF

TitleLaporan Resmi 21-22 Konsep Pemrograman [String]
File Size504.9 KB
Total Pages17
Document Text Contents
Page 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
name = “RINI”

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

Laporan Resmi Praktikum Konsep Pemrograman : String |RENDRA BUDI HUTAMA
Halaman 1

Page 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 :

printf("%s\n", var_string);

Laporan Resmi Praktikum Konsep Pemrograman : String |RENDRA BUDI HUTAMA
Halaman 2

Page 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[])
{
int i;

Laporan Resmi Praktikum Konsep Pemrograman : String |RENDRA BUDI HUTAMA
Halaman 8

Page 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

String tersebut.

Laporan Resmi Praktikum Konsep Pemrograman : String |RENDRA BUDI HUTAMA
Halaman 9

Page 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");
printf("Perbedaan strcmp() dan strcmpi()\n");

Laporan Resmi Praktikum Konsep Pemrograman : String |RENDRA BUDI HUTAMA
Halaman 16

Page 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
CASE SENSITIVE dan strcmpi untuk perbandingan String secara INCASE SENSITIVE.

Laporan Resmi Praktikum Konsep Pemrograman : String |RENDRA BUDI HUTAMA
Halaman 17

Similer Documents