Pertemuan 19-20 String Matakuliah : T0616 / Algoritma dan Pemrograman Tahun : 2007 Versi : 1/0 Pertemuan 19-20 String
Menerapkan manipulasi string berdasar konsep tipe data string (C3) Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Menerapkan manipulasi string berdasar konsep tipe data string (C3)
Fungsi Input dan Output string Inisialisasi string Header string.h Outline Materi String Definisi string Fungsi Input dan Output string Inisialisasi string Header string.h
Definisi String String dalam bahasa C adalah array of character yang diakhiri dengan null character. Sekuen karakter yang diapit oleh double quote (“_“). char s[ ] = “BiNus”; atau char s[ ] = {‘B’,’i’,’N’,’u’,’s’,’\0’}; Simbol null character adalah ‘\0’ dengan nilai Ascii 0 Null character otomatis ditambahkan oleh sistem. String bukanlah tipe data di c.
String diapit oeh double quote. Karakter vs String Karakter dalam bahasa C diapit oleh single quote. Tiap karakter menempati satu byte memori. ‘A’ adalah karakter A 1 byte memori String diapit oeh double quote. “A” adalah string A Dua byte memori, satu untuk ‘A’ dan satu untuk ‘\0’ yang otomatis ditambahkan oleh sistem.
Konstanta vs Variabel String Konstanta string: String yang tidak dapat diubah isinya. “Saya BiNusian” Variabel string: Diinput menggunakan fungsi scanf() . Tidak perlu operator alamat ‘&’ karena nama string isinya adalah alamat.
Konstanta vs Variabel String CONTOH #include<stdio.h> void main( ) { char nama [30]; printf(“\nInput nama Anda “); scanf(“%s”, nama); printf(“\nNama Anda: %s”, nama); }
Hanya kata pertama yang akan diambil oleh scanf(). Kelemahan Scanf Menggunakan karakter white space untuk mengakhiri pemasukan nilai variabel. Tidak dapat digunakan untuk memasukkan string yang terdiri dari beberapa kata. Hanya kata pertama yang akan diambil oleh scanf(). Misalkan scanf(“%s”, nama); diisi “sylvana marine” maka hanya “sylvana” yang akan diambil.
Fungsi Input Output String Fungsi gets() Membaca string dari keyboard. Berhenti hanya jika [Enter] ditekan. Spasi dan tab dianggap sebagai bagian dari string. Fungsi puts() Pasangan fungsi gets(). Untuk mencetak string. Tidak ada fasilitas menata format.
Fungsi Input Output String CONTOH void main() { char namaJurusan[21]; puts(“Input nama jurusan Anda”); gets(namaJurusan); puts(“Nama jurusan Anda :”); puts(namaJurusan); }
Karakter individual diapit oleh ‘ ‘ Inisialisasi String Karakter individual diapit oleh ‘ ‘ char nama[ ] = {‘n’, ‘a’, ‘n’, ‘a’, ‘\0’}; char nama[5] = {‘n’, ‘a’, ‘n’, ‘a’, ‘\0’}; char nama[4] = {‘n’, ‘a’, ‘n’, ‘a’, ‘\0’}; //error Sekuen karakter diapit oleh “ “ char nama[ ] = “nana”; char nama[5] = “nana”; char nama[4] = “nana”; //error
Inisialisasi String Contoh : char a[ ] = {‘b’, ‘i’, ‘n’, ‘u’, ‘s’}; //not a string char b[ ] = “binus”; //ok char c[8] = “binus”; //ok
Inisialisasi String Contoh : /* Inisialisasi string */ #include <stdio.h> void main() { char str1[ ] = {`A', ` `, `s', `t', `r', `i', `n', `g', ` `, `c', `o', `n', `s', `t', `a', `n', `t', `\0'}; char str2[] = "Another string constant"; int i; /* mencetak str2 */ for (i=0; str1[i]; i++) printf("%c", str1[i]); printf("\n"); for (i=0; str2[i]; i++) printf("%c", str2[i]); }
Header string.h Berisi fungsi-fungsi untuk memanipulasi string. strlen() Menghasilkan panjang string, tidak menghitung karakter null. strcpy(s1,s2) Copy s2 ke s1. strncpy(s1,s2,n) Copy n karakter pertama s2 ke s1. strcat(s1,s2) Menambahkan string s2 ke akhir dari string s1. strncat(s1,s2,n) Menambahkan n karakter string s2 ke akhir dari string s1. strcmp(s1,s2) Membandingkan isi string s1 dan s2, jika isinya sama maka nilainya 0.
Header string.h Contoh : char s1[ ] = “abcdef”; char s2[ ] = “xyz”; strlen(“nana”); // 4 strcmp(“nana”, “nana”) // bernilai 0 strcpy(s1,s2); // s1 = “xyz”, s2 = “xyz” strncpy(s1,s2,2); // s1 = “xyabcdef”, s2 = “xyz” strncpy(s1,s2,4); // jika n>=strlen(s2) efek sama // dengan strcpy() s1 = “xyz” strcat(s1,s2); // s1=“abcdefxyz”, s2=“xyz” strncat(s1,s2,2); // s1=“abcdefxy”, s2=“xyz” s1 = “Happy” s2 = “New Year” strcat( s1, s2 ) // s1= “Happy New Year” strncat( s3, s1, 6 ) // s1= “Happy” strcat( s3, s1 ) // s1= “Happy Happy New Year”
Contoh : Header string.h /* Copy string */ #include <stdio.h> #include <string.h> void main() { char str1[] = "Copy a string."; char str2[15]; char str3[15]; int i; strcpy(str2, str1); // dengan strcpy() for (i=0; str1[i]; i++) // tanpa strcpy() str3[i] = str1[i]; str3[i] = `\0'; /* menampilkan str2 dan str3 */ printf("The content of str2: %s\n", str2); printf("The content of str3: %s\n", str3); }
Diberikan sebuah array karakter : char str1[] = "Latihan."; Buat program untuk mengkopi string dari str1 ke str2
Diberikan sebuah array karakter : char str1[] = “Happy"; Latihan Diberikan sebuah array karakter : char str1[] = “Happy"; char str1[] = “New Year"; Buat program untuk menghasilkan str3 yang berisi : “Happy New Year” “Happy Year”
Buat program untuk: Latihan mengambil string dari keyboard membalik susunan karakter dalam string tsb menampilkan string yg sudah dibalik ke layar monitor Contoh: String yg diinput : KASUR Ditampilkan : RUSAK
Palindrom adalah kata yang dibaca dari belakang dan depan sama saja. Latihan Palindrom adalah kata yang dibaca dari belakang dan depan sama saja. Contoh : SUGUS, TAMAT (coba cari contoh yang lain) Tugas Anda adalah membuat program untuk menerima input string dari keyboard dan mengecek apakah sebuah kata palindrom atau bukan. Contoh : Masukkan kata : KASUR Bukan Palindrom Makukkan kata : sugus Palindrom
Latihan Buatlah sebuah program untuk menginput nama Anda dari keyboard dan menggerakkan string nama Anda dari posisi kiri atas layar ke posisi kanan bawah ( dari pos(0,0), pos(1,1,), pos(2,2), pos(3,3) s/d pos(24,24) )
Adakah cara lebih mudah ? Latihan Jelaskan apakah output program berikut ! #include <stdio.h> void main() { char str[80]; int i, delt = `a' - `A'; printf(“Input string (maks 80 char):\n"); gets( str ); i = 0; while (str[i]){ if ((str[i] >= `a') && (str[i] <= `z')) str[i] -= delt; ++i; } printf(“Hasil string :\n"); puts( str ); Adakah cara lebih mudah ?
Latihan Apa yang akan dicetak oleh kode berikut: char s[] = “Bina Nusantara”; int count = 0; for(char *p = s; *p; p++) if(isupper(*p)) ++count; printf(“\n%d “, count); if(isupper(*p)) *p = tolower(*p); printf(“\n%s “, s);
Latihan Apa tugas fungsi cp() berikut: char* cp(char *s1, const char *s2) { for(char *p = s1; *s2; *p++ = *s2++; *p = ‘\0’; return s1; } Apa tugas fungsi rev() berikut : void rev() { for(char *end = s; *end; end++) char temp; while(s < end -1) { temp = *--end; *end = *s; *s++ = temp;