Anda di halaman 1dari 20

BAB VI

STRING

6.1 Tujuan
1. Tentang konsep string
2. Menjelaskan tentang operasi I/O pada string
3. Menjelaskan cara mengakses elemen string
4. Menjelaskan berbagai fungsi mengenai string

6.2 Dasar Teori


6.2.1 Struktur Data
Dalam pemprograman string merupakan kumpulan dari berbagai
karakter. Untuk membedakan string dengan karakter, dalam C++
dibedakan penulisannya. Suatu nilai merupakan string apabila diapit
dengan tanda petik “…”, misalnya “SAYA” . sedangkan karakter (char)
diapit dengan tanda petik tunggal , missal ‘s’ .Lantas bagaimana dengan
“s”?? dalam hal ini “s” juga merupakan string, meskipun karakter
penyusunnya terlihat hanya satu. Akan tetapi pada kenyataannya , “s”
disusun tidak hanya karakter’s’ saja , melainkan terdapat pula karakter
NULL atau ‘\0’, yang berfungsi sebagai sebagai tanda akhir dari string.
Untuk mendeklarasikan variabel string maka digunakan :
String NAMA_VARIABEL;

Untuk mendeklrasikan variabel string dengan nilai awal maka


digunakan :
String NAMA_VWARIABEL = “ABCD”;

Ada beberapa string yang tersusun dari char. Untuk mendeklrasikan


variabel string dalam bentuk char maka digunakan :
Char NAMA_VARIABEL [panjang];

Atau
Char NAMA_VARIABEL[] = “nilai”;
6.2.2 Inputan string
Pemasukan data string dapat dilakukan dengan cara penginputkan
variabel biasa yaitu dengan menggunkan cin. Akan tetapi jika inputan
string memiliki lebih dari 1 kata (dipisahkan oleh spasi) maka kata
selanjutnya tidak akan terinput. Untuk mengatasi hal ini maka digunakan
sintaks getline.
#include <iostream>
using namespace std;
int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
string nama;
cout << "Masukan : ";
cin >> nama;
cout << "Nama saya adalah : "<< nama;
return 0 ;
}

Gambar 6. 1 output string 1 kata


Contoh program 2
#include <iostream>
using namespace std;
int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
string nama;
cout << "Masukan : ";
getline(cin, nama);
cout << "Nama saya adalah : "<< nama;
return 0;
}

Gambar 6. 2 output string 2 kata


6.2.3 Fungsi mengenai string
Untuk membantu memproses dan memanipulasi string yang
merupakan penggabungan dari char, terdapat beberapa fungsi yang dapat
mempermudah diantaranya :
- Strcpy()
Bentuk : #include <cstring>
Strcpy (tujuan, asal);
Fungsi ini digunakan menyalin isi variabel awal (asal) ke variabel tujuan
(tujuan).
- Strlen()
Bentuk : #include<cstring>
Strlen(NAMA_VARIABEL);
Fungsi ini digunakan untuk menghitung panjang dari string yang ada.
- Strcat()
Bentuk : #include <cstring>
Strcat(tujuan, sumber);
Menggabungkan dua buah nilai string tidak bisa dilakukan dengan
operator +, Karena operator ini bukan operator untuk operasi string .
Penggabungan dua buah nilai string dapat dilakukan dengan fungsi strcat()
dengan menambhakan string sumber ke string tujuan.
- Strcmp()
Bentuk : #include <cstring>
Strcr(str1, var_char);
Fungsi ini dapat digunakan untuk mencari suatu nilai karakter yang berada
dalam suatu string. Dalam hal ini adalah mencari var_char dalam string
str1.
6.3 Latihan
1. Latihan 1 strcpy()
a. Source code
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
char a[]="ABCD";
char b[5];
strcpy (b,a);
cout<< "string a= "<<a<<endl;
cout<< "string b= "<<b<<endl;
return 0;
}
b. Output

Gambar 6. 3 output latihan 1


c. Penjelasan
Pada gambar diatas perintah digunakan untuk menampilkan
compile. Pada tahap ini dimasukkan huruf ABCD maka akan
menghasilkan output string ABCD. Dikarenakan pada penyebutan
variabel dideklarasikan variabelnya yaitu x. Kemudian dimasukkan
nilai x, kemudian hasilnya seperti pada gambar diatas.
2. Latihan 2 strlen()
a. Source code
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
char nama[]="AGUS";
cout<< "Nama : AGUS"<<endl;
cout<<"banyak karakter variabel nama :
"<<strlen(nama);
return 0;
}
b. Output

Gambar 6. 4 output latihan 2


c. Penjelasan
Pada gambar diatas adalah percobaan strlen. Jika diinputkan
huruf yang terdiri dari beberapa kolom kemudian maka akan
menghasilkan jumlah semua huruf yang ada pada kolom pertama dan
kolom kedua yaitu 5. Sedangkan jika memasukan huruf maka
output-nya yang keluar adalah jumlah huruf tersebut dan hasilnya
akan ditampilkan seperti pada gambar diatas.
3. Latihan 3 strcat()
a. Source code
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
char kata1[]=" Teknik";
char kata2[]=" Informatika";
strcat(kata1, kata2);
cout <<kata1;
return 0;
}
b. Output

Gambar 6. 5 output latihan 3


c. Penjelasan
Pada gambar diatas merupakan hasil dari percobaan perintah
strcat. Jika input-an dimasukkan huruf teknik informatika maka akan
menghasilkan huruf tersebut dan hasilnya seperti pada gambar
diatas.
4. Latihan 4 stcmp()
a. Source code
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
char str1[]=" HALLO";
char str2[]=" hallo";
char str3[]=" HALLO";
cout<< " perbandingan"<<str1<< " dan"<<str2<< " adalah
: "<<strcmp(str1,str2)<<endl;
cout<< " perbandingan"<<str1<< " dan"<<str3<< " adalah
: "<<strcmp(str1,str3)<<endl;
cout<< " perbandingan"<<str2<< " dan"<<str1<< " adalah
: "<<strcmp(str2,str1)<<endl;
return 0;
}
b. Output

Gambar 6. 6 output latihan 4


c. Penjelasan
Pada gambar diatas merupakan latihan dengan menggunakan
perintah strcmp. Jika input-an dimasukkan hasil perbandingan halo.
Dikarenakan pada penyebutan variabel dideklarasikan variabelnya
yaitu x. Kemudian dimasukkan nilai x tersebut dengan angka maka
hasil output akan muncul sesuai gambar diatas.
5. Latihan 5 strchr()
a. Source code
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
char A[]="DASPRO";
cout<< "Mencari karakter P : "<<strchr (A,'P')<<endl;
cout<< "Mencari karakter X : "<<strchr (A,'x')<<endl;

return 0;
}
b. Output

Gambar 6. 7 output latihan 5


c. Penjelasan
Pada gambar diatas merupakan percobaan strchr. Header
<cstring> merupakan header yang digunakan untuk mengeksekusi
fungsi strchr().Tipe data yang digunakan adalah char berupa
variabel A dengan array nilai awal “DASPRO”. Kemudian hasilnya
akan ditampilkan seperti pada gambar diatas.

6.4 Tugas
1. Tugas 1
Perbaikilah progame berikut hingga menghasilkan output yang benar
#include <iostream>
using namespace std;
int main()
{
cout << endl;
cout << "Nama\t: ILHAM HIDAYAT" << endl;
cout << "Nim\t: 32601800012" << endl << endl;
char nama, alamat, email;
cout <<"masukan nama : ";
cin.getline(cin, nama);
cout << "Masukan email :";
getline(cin, email);
cout << "Masukan alamat :";
getline(cin);

system("clear");
cout << "Nama anda : "<< nama <<endl;
cout << "email anda : "<< email <<endl;
cout << "almat anda : "<< alamat <<endl;
return 0;
}
a. Source code
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;

string nama, alamat, email;


cout << "Masukkan Nama : ";
getline(cin,nama);
cout << "Masukkan Email : ";
getline(cin,email);
cout << "Masukkan Alamat : ";
getline(cin,alamat);

system("cls");
cout << "Nama Anda\t: " << nama << endl;
cout << "Email Anda\t: " << email << endl;
cout << "Alamat Anda\t: " << alamat << endl;

return 0;
}
b. Output

Gambar 6. 8 output tugas 1 (sebelum di enter)


Gambar 6. 9 output tugas 1 (setelah di enter)
c. Penjelasan
Pada gambar diatas merupakan program yang menjelaskan
tentang memasukkan atau meng-input biodata. Terdapat header
<windows> berfungsi mengeksekusi system clear screen
system(“cls”). Tipe data yang digunakan adalah string dengan
nama variabel nama, alamat, dan email. Pertama program akan
menampilkan tampilan “Masukkan Nama” dengan perintah untuk
memasukkan nilai variabel nama. Tampilan “Masukkan Email : ”
dengan perintah untuk mamasukkan nilai variabel email. Tampilan
“Masukkan Alamat : ” dengan perintah untuk memasukkan nilai
variabel alamat. Code program getline berfungsi memasukkan
input-tan yang memiliki spasi (dapat membaca spasi pada input-tan).
System(“cls”) berfungsi sebagai menghapus dan membersihkan
output. Kemudian nilai masukkan sebelumnya di output pada “Nama
Anda : ” diikuti nilai variabel nama, tampilan “Email Anda ” diikuti
nilai variabel email, dan tampilan “Alamat Anda : ” diikuti nilai
variabel alamat. Kemudian hasilnya akan ditampilkan seperti
gambar diatas.
2. Tugas 2
Jika kedua program di bawah ini dijalankan akan mendapatkah hasil
yang sama. Kenapa demikian ? analisa kedua program tersebut.
a. Source code
Progam 1
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;

main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
string kata="?ASPROG";
char ch;
for(ch='A';kata!="DASPROG";ch++)
{
cout<<kata<<endl;
kata[0]=ch;
}
cout<<"setelah loop berhenti,kata adalah " << kata;
getche();
}
Progam 2
#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;

main()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
char kata[6];
char ch;

strcpy(kata, "?ASPROG");
for(ch = 'A'; strcmp(kata, "DASPROG"); ch++)
{
cout << kata << endl;
kata[0] = ch;
}
cout << "Setelah loop Berhenti, Kata adalah "<< kata;
getche();
}
b. Output

Gambar 6. 10 output tugas 2

c. Penjelasan
Pada gambar diatas merupakan perbandingan antara kedua
program yang menghasilkan tampilan output yang sama, namun
berdeda dalam penulisan sintaks. Pada program pertama tipe data
berupa char dengan variabel ch dan string berupa variabel kata
dengan nilai “?ASPROG”. pada program terdapat perulangan for
dengan kondisi1 berupa ch = karakter ‘A’, kondisi2 berupa variabel
kata != “DASPRO, dan kondisi3 berupa variabel ch++(ditambah 1
disetiap perulangan), dan menjalankan statement. Variabel ch
melakukan perulangan sampai batas kondisi2, dan setiap perulangan
akan ditambah 1. Penambahan karakter sesuai dari urutan ASCII.
Statement menampilkan tampilan variabel kata, dengan array ke-0
pada variabel kata. Selanjutnya menampilkan tampilan “setelah loop
berhenti, kata adalah ” diikuti dengan variabel kata.
Kemudian pada gambar berikutnya program kedua tipe data
yang digunakan adalah char berupa variabel kata dengan array 6
digit. Dan variabel ch. Selanjutnya terdapat fungsi string strcpy(kata,
“?ASPROG”) maksudnya menyalin atau meng-copy string “?
ASPROG” ke dalam variabel kata, sehingga variabel kata berisi
nilai “?ASPROG”. berbeda dengan program sebelumnya nilai
variabel kata sudah dideklarasikan nilainya. Kemudian hasilnya
akan ditampilkan seperti pada gambar diatas.
3. Tugas 3
Buatlah progam yang memuat 3 pilihan yaiti
a. Mengubah plaint text(pesan/tekx asli) manjadi chiper text(pesan/text
ter-enskripsi/tersandi)
b. Mengubah chiper text(pesan/text ter-enskripsi/tersandi) manjadi
plaint text(pesan/tekx asli)
c. Keluar
d. Kunci untuk men-enskripsi pesan tersebut adalah gerser 3 huruf.
Gambar 6. 11 soal tugas 3
a. Source code
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
main ()
{
cout<<" ===========================\n";
cout<<" = Nama : Dzikry Alfian ="<<endl;
cout<<" =-------------------------= \n";
cout<<" = NIM : 32602000024 ="<<endl;
cout<<" ===========================\n"<<endl;
int pilih, i, n;
char plaint[100], chipert[100];
again:
cout << "Silahkan masukan 1, 2, atau 3\n";
cout << "1. Cari Chipert Text\n";
cout << "2. Cari Plaint Text\n";
cout << "3. Keluar\n";
cout << "\t\tInput : ";
cin>>pilih;
std::cin.ignore();
if (pilih==1)
{
cout << "Plaint text : ";
cin.getline(plaint,100);
n = strlen (plaint);
cout << "\nChiper text : ";

for (i=0;i<n;i++)
{
chipert[i] = (plaint[i]+3);
cout << chipert[i];
}
//getche();
cout<<endl<<endl;
goto again;
}
else if(pilih==2)
{
cout << "Chiper text : ";
cin.getline (chipert,100);
n = strlen (chipert);
cout << "\nPlaint text : ";

for (i=0;i<n;i++)
{
plaint[i] = (chipert[i]-3);
cout << plaint[i];
}
cout<<endl<<endl;
// getche();
goto again;
}
else
cout<< "Keluar Dari Program, Terimakasih";
exit(0);
}
b. Output

Gambar 6. 12 output tugas 3


c. Penjelasan
Pada gambar diatas merupakan program yang mengubah teks
menjadi pesan teks bersandi dan sebaliknya pesan bersandi menjadi
teks. Terdapat header <cstring> berfungsi mengeksekusi fungsi
string pada program yaitu strlen(). Program terdiri dari fungsi utama
dan 2 fungsi tambahan berupa enkripsi(char a[]) dan deskripsi(char
b[]). Tipe data yang digunakan adalah char berupa variabel kata1
dengan array nilai awal “Dasar-Dasar Pemrograman” dan variabel
kata2 dengan array nilai awal “Gdvdu0Gdvdu#Shpurjudpdq”, dan
tipe data interger berupa input, serta variabel i yang berada di fungsi
tambahan. Kemudian hasilnya akan ditampilkan seperti pada gambar
diatas.

6.5 Kesimpulan
String adalah sederetan simbol yang tidak tertentu panjangnya,
yang dianggap sebagai panjang satu unit. String dapat berupa huruf,
angka, karakter khusus, maupun karakter Unicode. Dalam bahasa C++
terdapat beberapa fungsi yang digunakan untuk operasi pengolahan string.
String dapat dimanipulasi dengan aturan tertentu. Di mana bahasa C++
telah menyediakan semua ini ke dalam pustakanya.
Berikut adalah fungsi-fungsi yang digunakan untuk melakukan
manipulasi string :
1. Fungsi strcat digunakan untuk menggabungkan dua string menjadi satu.
2. Fungsi strlen digunakan untuk menghitung panjang karakter pada suatu
string. strlen adalah fungsi yang bertipe data integer.
3. Fungsi strcpy digunakan untuk menyalin isi string ke suatu variabel.
4. Fungsi strupr digunakan untuk mengubah semua karakter huruf yang
terdapat pada suatu variabel menjadi huruf besar semua (Uppercase).
5. Fungsi strlwr digunakan untuk mengubah semua karakter huruf yang
terdapat pada suatu variable menjadi huruf kecil semua (Lowercase).

Anda mungkin juga menyukai