Contact Form

Name

Email *

Message *

Tutorial Pemrograman C: Memahami Konsep Tipe Data String

Post a Comment

String merupakan sebuah tipe data didalam bahasa pemrograman yang berbentuk teks.

String didalam bahasa C, bukan merupakan tipe data standard, melainkan tipe data bentukan dari kumpulan banyak karakter.

atau kumpulan data yang bertipe char (array of char).

Didalam pemrograman, string sering dipakai untuk keperluan Input kata/kalimat dan juga bisa digunakan untuk memanipulasi teks.

Seperti yang sering kita lakukan sehari-hari, menulis pesan dikolom komentar atau mengirim percakapan via chat, merupakan penerapan penggunaan tipe data string dalam kehidupan sehari-hari.


Didalam pemrograman, suatu konstanta/nilai dari data string, ditulis dengan diawali dan diakhiri menggunakan tanda petik ganda " " (double quotes).

Contoh : "Belajar String"

Nilai string ini disimpan didalam memori secara berurutan dengan komposisi sebagai berikut.

Setiap karakter yang dituliskan didalam string, akan menempati memori sebesar 1 byte, semakin panjang string yang dituliskan, semakin tinggi pula memori yang dibutuhkan.

Byte terakhir didalam string secara otomatis akan berisi karakter NULL (\0). Karakter tersebut merupakan elemen default didalam data string.

Ketika kita menampilkan string kelayar, karakter NULL tersebut tidak akan ditampilkan sebagai output.


Deklarasi String

Didalam bahasa C, variabel String dapat dituliskan sebagai berikut.

  	
    // Pendefinisian Veriabel String
    Tipe varString[ukuran];
    
    // Contoh
    char name[10];
  

Dari contoh diatas, char name[10]; merupakan cara pendeklarasian variabel string dengan panjang maksimal 10 karakter(termasuk karakter NULL).

Perlu kita ingat kembali bahwa string ini merupakan data bertipe array of char, yang dimana setiap elemen/karakternya termuat didalam sebuah Indeks, karakter pertama berada pada indeks 0, karakter kedua berada pada indeks 1, dst. 

Selain cara deklarasi seperti contoh diatas, variabel string juga dapat langsung diinisialisasikan secara langsung.

Perhatikan program berikut.

  	
    // Penginisialisasian Veriabel String
      	
  	#include <stdio.h> 
  // Cara 1   char string1[] = {'H','e','l','l','o','\0'};   // Cara 2   char string2[] = "Hello";
  printf("%s\n", string1);   printf("%s\n", string2); return 0; }

cara1, kita menginisialisasikan variabel string1[] dengan menuliskan karakternya satu-persatu. Pada metode ini, dibagian akhir elemen kita wajib menuliskan karakter NULL (\0).

Pada cara2, didalam variabel string2[] kita tuliskan langsung kata "Hello". Pada cara kedua ini, elemen terakhir tidak perlu dituliskan karakter NULL (\0);. Yang secara implisit akan disisipkan otomatis oleh kompiler.

Kedua cara penulisan diatas sebetulnya sama saja, program akan tetap menghasilkan output yang sama.

Hasilnya.


Fungsi Input String

Untuk meminta data dari user, bahasa C telah menyediakan berbagai macam fungsi standar input data string, diantaranya yaitu:

- scanf()

- gets()

- fgets()

Ketiga fungsi diatas berada didalam file header <stdio.h>.

Dari masing-masing fungsi tersebut, tentunya memiliki syntax penulisan yang berbeda-beda.

  	
  	#include <stdio.h> 
int main(){   char myName[20];   // Pendefinisian fungsi scanf()   scanf("%s", namaArray);   // Contoh   scanf("%s", myName);   // Pendefinisian fungsi gets()   gets(namaArray);   gets(myName);   // Pendefinisian fungsi fgets()   fgets(namaArray, sizeof(namaArray), stdin);   fgets(myName, sizeof(myName), stdin); return 0; }

Jika kalian perhatikan secara seksama penulisan diatas, didepan namaArray tidak ditemukan simbol alamat (&), sebagaimana sering kita tuliskan saat menginputkan data bertipe int, float, char, dll.

Hal ini terjadi karena, namaArray tanpa kurung siku sudah menyatakan alamat yang ditempati oleh elemen pertama dari array tsb.

Jadi, cukup dituliskan langsung nama Array-nya saja.


. . .

Dari masing-masing fungsi input data string diatas, tentunya memiliki karakteristik dan performa yang berbeda-beda.

Fungsi scanf() hanya bisa digunakan untuk menginputkan data string yang tidak mengandung karakter spasi, apabila didalam string tersebut terdapat spasi, maka karakter setelahnya akan terpotong dan tidak ditampilkan kelayar sebagai output.

  	
  	#include <stdio.h> 
int main(){   char kalimat[20];   printf("Masukkan sebuah kalimat : ");   scanf("%s", kalimat);   printf("Kalimat yang anda masukkan : %s", kalimat); return 0; }

Hasilnya.


Fungsi gets() akan membaca seluruh karakter inputan meskipun karakter yang diinputkan tersebut melebihi ukuran maksimal Array, hal tersebut menyebabkan variabel menjadi kelebihan muatan.

Didalam pemrograman istilah kelebihan muatan disebut sebagai buffer overflow, yang mengakibatkan overwrite atau variabel yang dideklarasikan setelahnya akan tertumpuki oleh muatan yang berlebih tadi.

Hal tersebut tentunya sangatlah tidak disarankan, selain program mengalami error, juga menyebabakan penghentian eksekusi program secara mendadak.


Fungsi fgets() merupakan fungsi input data string yang dinilai lebih aman dari dua fungsi diatas. 

Funsi fgets() ini akan membaca seluruh karakter masukan, apabila karakter yang diinputkan melebihi batas maksimum Array, maka kelebihannya tadi akan dibuang dan tidak ditampilkan sebagai output.

  	
  	#include <stdio.h> 
int main(){   char kalimat[15];   printf("Masukkan sebuah kalimat : ");   fgets(kalimat, sizeof(kalimat), stdin);   printf("Kalimat yang anda masukkan : %s", kalimat); return 0; }

Untuk memperjelas pemahaman kalian tentang fungsi input data string didalam bahasa C ini, dapat kalian pelajari pada Perbedaan fungsi scanf(), gets(), dan fgets().


Fungsi Output String

Fungsi output digunakan untuk menampilkan data string ke layar.

Didalam fungsi output data string ini, Bahasa C telah menyediakan dua fungsi standar, yaitu:

- printf()

- puts()

Berikut merupakan syntax penulisannya didalam program.

  	
  	#include <stdio.h> 
int main(){   char teks[] = "Hello World!";   printf("%s\n", teks);   puts(teks);   // Atau bisa seperti ini   printf("Hello World!\n"),;   puts("Hello World!"); return 0; }

Didalam fungsi puts(), setelah eksekusi program selesai, string yang akan ditampilkan berikutnya secara otomatis akan berganti baris / newline.

Berbeda halnya dengan fungsi printf(), yang dimana jika kita mau berganti baris maka harus menginputkan karakter newline (\n) secara manual.

  	
  	#include <stdio.h> 
int main(){   char teks[] = "Hello World!";   puts(teks);   puts(teks);   puts(teks);   printf("%s", teks);   printf("%s", teks);   printf("%s", teks); return 0; }


. . .

Karakter-karakter yang ada didalam string, dapat kita akses sama halnya saat kita mengakses elemen Array. Yaitu dengan menuliskan nama Array beserta Indeksnya.

Contoh:

  	
  	#include <stdio.h> 
int main(){   char teks[] = "Belajar String";   printf("%c", teks[4]); return 0; }

Program diatas kita ingin mengakses karakter yang berada pada indeks 4.

Hasilnya.


Latihan Soal

Untuk menambah pemahaman mengenai materi String ini, coba kerjakan latihan soal berikut.

  1. Buatlah sebuah fungsi untuk menghitung banyaknya karakter didalam string, misal fungsi tersebut bernama pjg_str(). Didalam fungsi main() input sebuah kalimat, selanjutnya panggil fungsi pjg_str() untuk melakukan tugasnya. tampilkan hasilnya ke layar.

    Contoh:

    Masukkan sebuah kalimat : Belajar String

    Kalimat yang dimasukkan sebanyak 14 karakter

  2. Buatlah sebuah fungsi untuk menghitung banyaknya karakter pilihan didalam string, misal fungsi tersebut bernama hitung_char(). Didalam fungsi main() input sebuah kalimat, selanjutnya panggil fungsi hitung_char() untuk melakukan tugasnya. tampilkan hasilnya ke layar.

    Contoh:

    Masukkan sebuah kalimat : Makan sate

    Karakter yang akan dihitung : a

    Karakter a terhitung sebanyak 3 karakter



Related Posts

Post a Comment