Tipe data string (nama lain array karakter) sangat sering dipakai dalam pembuatan program, khususnya yang berkaitan dengan pengolahan data berupa kata-kata (kumpulan huruf alpha numerik). Semua bahasa pemrograman mendukung penggunaan konsep string, bahkan untuk bahasa pemrograman generasi terbaru (semisal java, delphi, VB) telah memiliki tipe data string sendiri, bukan lagi memakai array karakter. Lebih dari itu dalam konsep OOP, class string sudah dilengkapi dengan fungsi-fungsi standar yang komplit.
Dalam artikel ini saya akan membahas satu bagian kecil saja tentang string dalam bahasa C++. Kunci utama mengolah tipe data string adalah dengan memahami aturan bahwa karakter terakhir (ujung belakang) sebuah data string SELALU berisi karakter NULL (''). Aturan ini perlu kita camkan ketika akan membuat fungsi-fungsi manipulasi data string, antara lain: menghitung panjang string, menggabungkan dua buah string, mengkopi isi string, mencari data ke dalam string, memotong bagian dalam sebuah string, dst.
Contoh yang akan saya tunjukkan disini adalah program untuk menghitung panjang sebuah string. Perlu Anda ketahui bahwa sebenarnya fungsi-fungsi baku manipulasi string sebenarnya sudah difasilitasi oleh bahasa C++ dengan memakai library string.h, programmer tinggal memanggil fungsinya. Namun tujuan saya membuat contoh ini adalah lebih untuk menguatkan ketrampilan dalam coding bukan sekedar menggunakan.
Dalam library string.h sudah terdapat fungsi length() untuk mengetahui panjang sebuah string. Disini kita akan belajar membuat program yang tujuannya sama denga fungsi length() tersebut. Perhatikan source code berikut:
#include "stdio.h"
void main()
{
char namaku[30];
printf("Ketikkan Nama = "); gets(namaku);
printf("Panjang Nama Anda = ");
for(int i=0; namaku[i] != ''; i++); //loop sampai ketemu NULL
printf("%d karakter", i); //i berisi info panjang string
}
Penjelasan:
Teknik menghitung panjang string di atas adalah dengan membaca satu demi satu isi array karakternya. Selama karakter yang dibaca bukanlah karakter NULL maka i akan terus bertambah satu. Dengan demikian i-lah yang menampung info tentang jumlah karakter di dalam string. Berani mencoba? Selamat Belajar! :D
Mengenal Pointer di C++
Tipe data pointer merupakan salah satu fitur yang diberikan oleh bahasa C, sebagaimana bahasa Pascal juga mendukungnya. Berbeda dengan jenis tipe data umumnya, tipe data pointer berfungsi untuk menyimpan alamat memori sebuah data melalui variabelnya. Jadi isi sebuah variabel bertipe pointer adalah alamat, bukan nilai data. Sebagai contoh sederhana kita punya variabel pointer integer bernama px (cirinya diawali dengan simbol bintang):
int x, *px;
x = 10;
px = &x;
Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:
#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen
pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}
Silahkan dicoba di rumah. Any question? Selamat belajar :)
int x, *px;
x = 10;
px = &x;
Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:
#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen
pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}
Silahkan dicoba di rumah. Any question? Selamat belajar :)
Subscribe to:
Posts (Atom)