Jobsheet Dasar Pemrograman, Bab. 7: String
Bab. 7 STR ING 7.1 Tujuan Instruksional Khusus 1.
Mahasiswa mampu memanfaatkan tipe data String dalam pembuatan program.
2.
Mahasiswa mampu menggunakan fungsi puts(), gets(), cputs() dan cgets() khususnya dalam input dan output data String.
3.
Mahasiswa mampu menggunakan fungsi atof() dan atai untuk mengkonversi string ke integer maupun ke float.
7.2 Pendahuluan String digunakan untuk menangani data yang bertipe teks, misalnya nama, alamat, dan lainlain. Di dalam Turbo C, string dianggap sebagai array dari karakter.
7.2.1
Mendeklaras ikan String
Cara meneklarasi string sama seperti mendeklarasikan array dengan tipe karakte r (char). char nama_variabel [Indeks] contoh: char nama [10] , artinya string nama akan mampu menampung karakter maksimum sebanyak 19 buah. Mengapa hanya 19 bukan 20?, string ada lah suatu rangka ian karakter yang diakhiri oleh karakter ‘null’. Dengan demikian karakter ‘null’ secara otomatis akan selalu ditambahkan ke dalam string tadi, oleh karena itu tempat yang dapat digunakan untuk menampung karakter yang lain adalah panjang array dikurangi dengan 1. Jadi bila panjang string pada variable nama diperkirakan maksimum terdiri dari 20 karakter, maka pada deklarasi : char nama [21] Sebuah catatan singkat: meskipun karakter null (\0) memiliki nilai numeric sama denga n nol (0), namun karakter ini bukan karakter nol (‘0’), karena kedua karakter ini memilki nilai ASCII yang berbeda. Karakter null (‘\0’) memilki nilai ASII sama dengan 0 (dalam heksadesimal atau desimal), sedangkan nol (‘0’) memiliki nilai ASII sama dengan 30. Deklarasi string dapa t dilakukan di da lam suatu fung si seba gai variable local, maupun di luar fungsi sebagai variable global. String dapat pula dideklarasikan sebagai static array.
Hal.97
Jobsheet Dasar Pemrograman, Bab. 7: String
7.2.2
Inisialisasi String
Ada dua cara untuk menginisialisai suatu string. Pertama seperti cara menginisialisasi array, misalnya : char nama[7]={‘T’,’E’,’L’,’K’,’O’,’M’,’\0’}; Karena setiap elemen array bertipe karakter, maka harus diletakkan di antara dua tanda kutip tunggal (‘). Elemen terakhir array harus berupa karakter null (‘\0’). Cara yang kedua lebih sederhana dari cara yang pertama, yaitu string diletakkan di antara dua tanda kutip (“) tanpa diakhiri oleh karakter null, dan tanpa menggunakan kurung kurawal: char nama[7]=”TELKOM”; kedua inisialisasi ini akan memberi hasil yang sama. 7.2.3
Mencetak String
Sama seperti data yang lain, string dapat juga dicetak dengan menggunakan printf. Sebagai penentu tipe (type specifier) dari string digunakan ‘%s’, misalkan :
printf(“\nNama Saya : %s”,”POLINES”); atau char nama[7]=”POLINES”; printf(“\nNama Saya : %s”, nama); Disini variabel array dituliskan namanya saja, tanpa diikuti dengan indeks. Karena dengan menyertaka n indeks anda berarti anda akan mencetak karakter yang menyusun array tadi. Bandingka n contoh diatas de ngan contoh be rikut ini: char nama[7]=”POLINES”; printf(“\nNama Saya : %s”,nama[1]); Outputnya : Nama Saya : O Bagaimana bila Indeks tidak diikuti dengan bilangan, seperti contoh di bawah ini : char nama[7]=”POLINES”; printf(“\nNama Saya : %s”,nama[]); Bila program ini Anda compile, maka akan terdapat pesan kesalahan yang menyatakan bahwa penulisan pernyataan diatas tidak benar. Hal.98
Jobsheet Dasar Pemrograman, Bab. 7: String
7.2.4
Menginputkan String
String dapat pula diinputkan dengan menggunakan scanf(), misalkan seperti contoh program di bawah ini: /* Menginputkan String */ main() { char nama[15]; clrscr(); printf("\nNama Anda : "); scanf("%s",nama); printf("\nHallo %s, senang berkenalan dengan Anda", nama); getche(); } Perhatikan penggunaan scanf() pada contoh di atas: scanf(“%s”,nama) disini digunakan nama buka n &nama, Karena pada array, nama variabel yang tidak diikuti dengan indeks menunjukkan alamat dari elemen pertama array tadi, jadi: nama saya artinya de ngan &nama[0] Compile da n ke mud ian jalankan contoh tersebut dengan mengisikan nama Aditya. Nama Anda : Polines Outputnya akan menjadi : Hallo Polines, senang be rkenalan denga n Anda P
0
o
1
l
2
i
3
n
4
e
5
s
6 7 8
ARRAY nama
9 10 11 12 13 14
Hal.99
Jobsheet Dasar Pemrograman, Bab. 7: String
Coba sekali lagi menginputkan : Nama Anda : Polines Semarang I ndonesia Ternyata sekarang outputnya : Hallo Polines, senang be rkenalan denga n Anda Dari contoh di atas dapat ditarik suatu kesimpulan: Data yang Anda inputkan dengan menggunkan scanf() tidak boleh mengandung spasi atau tab, karena sebuah data akan dianggap selesai bila scanf() menjumpai spasi atau tab (white space) di antara data tersebut. Sehingga : Polines Semarang Indonesia Akan diperhitungkan sebagai tiga data. Untuk mendapatkan hasil yang benar, program di atas dapat dimodifikasi menjadi : /* Modifikasi Input String */ main() { char nama1[15],nama2[15],nama3[15]; clrscr(); printf("\nNama Anda : "); scanf("%s %s %s",nama1,nama2,nama3); printf("\nHallo %s %s %s, senang berkenalan dengan Anda", nama1, nama2, nama3) ; getche(); } Sekarang inputkan : Nama Anda : Polines Semarang I ndonesia
Dan outputnya aka n menjadi : Hallo Polines Semarang I ndonesia, senang be rkenalan denga n Anda Meskipun sekarang ouputnya be nar, namun program di atas buka nlah suatu contoh yang baik, karena cara penanganan yang demikian akan menyebabkan membengkaknya penggunaan variabel. Hal ini dapat terlihat jelas dengan membandingkan kedua contoh tadi, dari sebua h contoh variabel (nama) akhirnya menjadi tiga variabel (nama1, nama2, dan nama3). Selain itu, jika nama tidak terdiri dari 3 kata, maka Anda akan mengalami kesulitan dalam menginputkan data tersebut. Untuk mengatasi hal ini akan diperkenalkan penggunaan fungsi input/output lainnya yang khusus untuk menangani data string.
Hal.100
Jobsheet Dasar Pemrograman, Bab. 7: String
7.2.5
Fungs i Input dan Output Untuk String
Fungsi input/output yang khusus untuk string, yaitu puts(), gets(), cputs() dan cgets(). Fungsi puts() sebenarnya mirip dengan printf(), yaitu digunakan untuk mencetak string di layar. puts() berasal dari kata “put string”. Bentuk umum fungsi ini : puts(string) String di sini dapat berupa konstanta, seperti : puts(“Nama Saya Politek”); atau berbentuk variabel, seperti : puts(nama) dimana nama ada lah suatu variabel array untuk string. Agak sedikit berbeda dengan printf(), string yang dicetak dengan puts() akan selalu diakhiri oleh ‘\n’ yang dibe rika n secara otomatis. Dengan de mikian string berikutnya aka n dicetak pada baris di bawahnya. Misalnya : puts(“NAMA SAYA : “); puts(“Politek”);
akan menghasilkan output: NAMA SAYA : Politek
Hal lain yang berbeda adalah puts() hanya dapat digunakan untuk mencetak sebuah string saja, seperti: puts(“NAMA SAYA : Politek”); SATU STRING Atau puts(nama); contoh-contoh berikut ini salah : puts(“NAMA SAYA : “,” Politek”); DUA STRING puts(“NAMA SAYA : %s”,nama); DUA STRING
Hal.101
Jobsheet Dasar Pemrograman, Bab. 7: String
puts() tidak mengenal penentu format (type specifier). Karena fungsi ini sudah dikhususkan untuk string, maka penentu tipe tidak diperlukan lagi.
Berbeda dengan fungsi puts(), fungsi gets() digunakan untuk menginputkan data string. Bentuk umum fungsi ini adalah : gets(nama_variabel_array); Contoh : gets(nama); Perbedaannya dengan scanf() adalah fungsi gets() ini dapat menerima data string yang mengandung spasi ataupun tab dan masih dianggap sebagai satu kesatuan data. Contoh berikut ini memperhatikan penggunaan fungsi gets() da n puts(). /* Penggunaan Fungsi gets () dan puts () */ main() { static char nama [20]; clrscr(); puts ("Nama Anda : "); gets(nama); puts("Senang berke nalan de ngan Anda : "); puts("nama"); getche(); } Dengan menginputkan “Telkom”, program ini akan memberikan output sebagai berikut: Nama Anda ; Telkom Senang berkenalan denga n Anda, Telkom Perhatikan dalam program di atas, pada waktu penginputan data 'Telkom', ternyata data ini di tuliskan di bawah 'Nama Anda : ', tampilan semacam ini mungkin kurang enak dilihat. Untuk membuat agar data input tersebut dapat dituliskan langsung di samping 'Nama Anda : ', akan diperkenalkan sebuah fungsi input lainnya, yaitu cputs.
cputs() mirip sekali dengan puts(). hanya pada akhir string tidak diikuti oleh 'return', sehingga string selanjutnya akan dicetak di samping string yang pertama. Contoh :
Hal.102
Jobsheet Dasar Pemrograman, Bab. 7: String
cputs("Nama Anda : "); cputs("Telkom"); akan diberikan output : Nama Anda : Telkom Contoh lain : cputs("Nama Anda : \n"); cputs("Telkom"); akan memberika output : Nama Anda : Telkom Perhatikan '\n' disini hanya memindahkan string yang berikutnya ke baris di bawahnya, sedangkan untuk kolomnya tidak dimulai dari awal, melainkan melanjutkan kolom yang telah ada dari baris di atasnya.
Contoh berikutnya : cputs("Nama Anda : \n\r"); cputs("Telkom"); output yang akan diberikan : Nama Anda : Telkom /* Penggunaan fungsi cputs() */ main() { static char nama[20]; clrscr(); cputs("Nama Anda : "); gets(nama); cputs("Senang berkenalan denngan Anda : "); puts(nama); } Outputnya : Nama Anda : Telkom Senang berkenalan dengan Anda, Telkom cgets() digunakan untuk mennginputkan data string tunggal. Secara umum sifat fungsi ini sama dengan gets() hanya cara menyimpan elemenya berbeda. Bila gets() akan
Hal.103
Jobsheet Dasar Pemrograman, Bab. 7: String
menyimpan karakter mulai dari elemen yang pertama, sedangkan cgets() menyimpan karakter mulai pada elemen yang ketiga, elemen yang kedua digunakan untuk menyimpan jumlah karakter yang telah Anda inputkan pada variable tersebut. 'P' 'l' 'a' 'c' 'e' '\o'
0 2 3 4 5 6 7 8 9 10 11 12 13
0
'♠' 'P' 'l' 'a' 'c' 'e' '\o'
12
gets()
1 2 3 4 5 6 7 8 9 10 11 13
cgets()
Untuk memberikan ilustrasi, cobalah program di bawah ini : /* Penggunaan cgets() */ main() { char nama[20]; int i; clrscr(); printf("Nama Anda : "); cgets(nama); for (i=0; i<20; ++i) { printf("\nKarakter ke %d : %c nilainya %d", i+I,nama[i],nama[i]); } printf("\nTekan sembarang tombol"); gets(); } Kemudian cobalah untuk menginputkan data berikut ini : Hal.104
1
Jobsheet Dasar Pemrograman, Bab. 7: String
Adhiyoso Andre Pareira Gunawan Perhatikan nilai karakter kedua, disana akan ditampilkan suatu nilai yang sama dengan jumlah karakter yang Anda ketikkan, kemudian mulai dari karakter ketiga dan seterusnya, Anda dapat melihat data yang Anda inputkan tadi. Misalkan untuk data : Adhijoso ........ Karakter ke 2 : Karakter ke 3 : A Karakter ke 4 : d Karakter ke 5 : h Karakter ke 6 : i Fungsi gets()
nilainya nilainya nilainya nilainya nilainya
8 65 100 104 105 dst……..
dan cgets() bila digunakan bersama-sama dengan scanf() seringkali
memberikan hasil yang tidak sempurna, misalnya input data dengan gets() atau cgets() kadang-kadang dilewati begitu saja, sehingga Anda tidak memiliki kesempatan untuk menginputkan data tersebut. Ditinjau dari segi penggunaan memorinya, fungsi scanf() membutuhkan memori lebih banyak daripada gets() dan cgets(), oleh karena itu penggunaan kedua fungsi lebih disukai dibandingkan dengan scanf(). Yang menjadi masalah disini adalah gets() dan cgets() hanya digunakan untuk menginputkan data string.
7.2.6
Fungsi atoi() dan atof()
Fungsi atoi() da n atof() sebenarnya merupakan fungsi konversi dari string menjadi numerik. Fungsi ini seringka li digunakan terutama bila data numeric diinputkan dengan menggunakan fungsi gets() atau cgets().
atoi() Fungsi atoi() merupakan singkatan dari ASCII to Integer, jadi fungsi ini digunakan untuk mengkonversikan string menjadi integer. Berikut ini diberikan sebuah contoh penggunaan atoi(). /* Penggunaan Fungsi atoi() */ main() { int bil; Hal.105
Jobsheet Dasar Pemrograman, Bab. 7: String
char x[10]; clrscr(); printf("Inputkan Sebuah Bilangan Bulat ; "); gets(x); /* konversi String ke Integer */ bil=atoi(x); printf("\nBilanga n te rsebut : %d", bil); printf("\nBilangan + 10 : %d", bil + 10); getche(); } Coba jalankan program ini, kemudian inputkan 2500. Pertama '2500' akan diterima sebagai string oleh gets(), kemudian dikonversikan menjadi integer oleh atoi(). Output dari program ini : Bilangan tersebut : 2500 Bilangan + 10 : 2510 Dari hasil output kedua (Bilangan + 10), disini terlihat bahwa bil memang telah bertipe numerik. atof() fungsi atof() digunakan untuk mengkonversikan data string menjadi float. atof() merupakan singkatan dari ASCII to float. Contoh penggunaan atof() akan diberikan pada program di bawah ini :
/* Penggunaan fungsi atof() */ main() { float bil; char x[10]; clrscr(); printf("Inputkan sebuah bilangan : "); gets(x); /* Konversi String ke Float */ bil=atof(x); printf("\nBilanga n te rsebut : %.3 f", bil); printf("\nBilangan + 10 : %.3f", bil + 10); getche(); } outputnya aka n menjadi : Bilangan tersebut : 20.000 Bilangan + 10 : 30.000 Hal.106
Jobsheet Dasar Pemrograman, Bab. 7: String
Hasilnya, meskipun ditulis dalam bentuk float, namun sebenarnya berupa integer. Agar hasilnya benar, atof() harus dideklarasika n sebagai float : float atof() output program akan menjadi: Bilangan tersebut : 20.300 Bilangan + 10 : 30.300
7.3 Peralatan 1.
1 set computer
2.
Software turbo C
7.4 Langkah Kerja 1. Buatlah program seperti dibawah ini dan simpan dengan nama Con71, kemudian lakukanlah compile dan run, da n catat hasilnya pada lembar kerja yang tersedia. /* Menginputkan String */ main() { char nama[15]; printf("\nNama Anda : "); scanf("%s",nama); printf("\nHallo %s, senang berke nalan de ngan Anda", nama); getche(); } 2. Buatlah program seperti dibawah ini dan simpan dengan nama Con72, kemudian lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia. /* Modifikasi Input String */ main() { char nama1[15], nama2[15], nama3[15]; clrscr(); printf("\nNama Anda : "); scanf("%s %s %s",nama1,nama2,nama3); printf("\nHallo %s %s %s, senang berkenalan dengan Anda", nama1, nama2, nama3) ; getche() ; }
Hal.107
Jobsheet Dasar Pemrograman, Bab. 7: String
3. Buatlah program seperti dibawah ini dan simpan dengan nama Con73, kemudian lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia. /* Penggunaan Fungsi gets () dan puts () */ main() { static char nama [20]; clrscr(); puts ("Nama Anda : "); gets(nama); puts("Senang berke nalan de ngan Anda : "); puts("nama"); getche(); } 4. Buatlah program seperti dibawah ini dan simpan dengan nama Con74, kemudian lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia.
/* Penggunaan fungsi cputs() */ main() { static char nama[20]; clrscr(); cputs("Nama Anda : "); gets(nama); cputs("Senang berkenalan denngan Anda : "); puts(nama); getche(); } 5. Buatlah program seperti diba wah ini dan simpa n dengan nama Con75, kemudian lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia.
/* Penggunaan cgets() */ main() { char nama[20]; int i; clrscr(); printf("Nama Anda : "); cgets(nama); for (i=0; i<20; ++i) { printf("\nKarakter ke %d : %c nilainya %d", Hal.108
Jobsheet Dasar Pemrograman, Bab. 7: String
i+I,nama[i],nama[i]); } printf("\nTekan sembarang tombol"); gets(); } 6. Buatlah program seperti dibawah ini dan simpan dengan nama Con76, kemudian lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia. /* Penggunaan Fungsi atoi() */ main() { int bil; char x[10] ; clrscr(); pr intf("Inputka n Sebuah Bilangan Bulat ; "); gets(x); /* konversi String ke Integer */ bil=atoi(x); printf("\nBilangan tersebut : %d", bil); printf("\nBilangan + 10 : %d", bil + 10); getche(); } 7. Buatlah program seperti dibawah ini dan simpan dengan nama Con77, kemudian lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia. /* Penggunaan fungsi atof() */ main() { float bil; char x[10]; clrscr(); printf("Inputkan sebuah bilangan : "); gets(x); /* Konversi String ke Float */ bil=atof(x); printf("\nBilangan tersebut : %.3f", bil); printf("\nBilangan + 10 : %.3f", bil + 10); getche(); }
7.5 Lembar Kerja No
Nama File
Keluaran
1
Hal.109
Jobsheet Dasar Pemrograman, Bab. 7: String
2 3 4 5 6 7
7.6 Pertanyaa n dan Tugas 1.
Perbaikilah program berikut ini hingga benar, kesalahan dapat berupa penggunaan perintah/fungsi yang salah, cara menuliskan pernyataan yang salah dan sebagainya: /* Mengkoreksi program yang salah */ main() { char nama[20]; int usia; printf("\n Inputkan nama anda: "); gets(&nama); printf("\n Inputkan usia anda: "); scanf("%d",usia); if (usia=25) printf("\n Andalah karyawan yang dibutuhkan,%s",nama[20]) }
2.
Tentukan output program berikut ini,tanpa mencoba programnya pada computer: main() { char nama1[20],nama2[20]; printf("\n Inputkan Nama Anda : "); gets(nama1); printf("\n Sekali lagi ? : "); gets(nama2); printf("\n%c",nama1 [2]); printf("\n%c",nama2 [2]); printf("\n%d",nama1 [2]); printf("\n%d",nama2 [2]); getche(); } Hal.110
Jobsheet Dasar Pemrograman, Bab. 7: String
Daftar Pustaka ++
1. Al Fatt, Hanif. Dasar Pemrograman C . Andi Offset, Jogyakarta, 2007. 2. Hartanto, Jogiyanto. Buku Konsep Dasar Pemrograman Bahasa C. Ando Offset, Jogyakarta, 2006. 3. Kadir, Abdul. Algoritma Pemrograman Menggunakan C++. Andi Offset, Jogyakarta, 2007. 4. Ngeon, Thomson Susabda . Pengantar Algoritma Dengan Bahasa C. Salemba Infotek, Jakarta, 2006. 5.
Nugroho, Adi. Algoritma dan Struktur Dara Dengan C. Andi Offset, Jogyakarta, 2009.
6. Partoharsojo, Hartono. Tuntunan Praktis Pemrograman Bahasa C 2.0. PT Elex Media Komputindo, Jakarta, Indonesia, 1989. 7. Supardi, Yuniar. Cara Mudah Belajar Bahasa C dan Flow Chart Dalam Praktek. Dinastindo, Jakarta, 2006.
Hal.111