Matakuliah Tahun Versi : T0616 / Algoritma dan Pemrograman : 2007 : 1/0 Pertemuan 19-20 String 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Menerapkan manipulasi string berdasar konsep tipe data string (C3) 2 Outline Materi String • Definisi string • Fungsi Input dan Output string • Inisialisasi string • Header string.h 3 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. 4 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. 5 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. 6 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); } 7 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. 8 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. 9 Fungsi Input Output String • CONTOH void main() { char namaJurusan[21]; puts(“Input nama jurusan Anda”); gets(namaJurusan); puts(“Nama jurusan Anda :”); puts(namaJurusan); } 10 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 11 Inisialisasi String • Contoh : • char a[ ] = {‘b’, ‘i’, ‘n’, ‘u’, ‘s’}; • char b[ ] = “binus”; • char c[8] = “binus”; //not a string //ok //ok 12 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"); /* mencetak str2 */ for (i=0; str2[i]; i++) printf("%c", str2[i]); } 13 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. 14 Header string.h • Contoh : char s1[ ] = “abcdef”; char s2[ ] = “xyz”; strlen(“nana”); strcmp(“nana”, “nana”) strcpy(s1,s2); strncpy(s1,s2,2); strncpy(s1,s2,4); strcat(s1,s2); strncat(s1,s2,2); // 4 // bernilai 0 // s1 = “xyz”, s2 = “xyz” // s1 = “xyabcdef”, s2 = “xyz” // jika n>=strlen(s2) efek sama // dengan strcpy() s1 = “xyz” // s1=“abcdefxyz”, s2=“xyz” // s1=“abcdefxy”, s2=“xyz” s1 = “Happy” s2 = “New Year” strcat( s1, s2 ) strncat( s3, s1, 6 ) strcat( s3, s1 ) // s1= “Happy New Year” // s1= “Happy” // s1= “Happy Happy New Year” 15 Header string.h • Contoh : /* 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); } 16 Latihan • Diberikan sebuah array karakter : char str1[] = "Latihan."; • Buat program untuk mengkopi string dari str1 ke str2 17 Latihan • Diberikan sebuah array karakter : char str1[] = “Happy"; char str1[] = “New Year"; • Buat program untuk menghasilkan str3 yang berisi : – “Happy New Year” – “Happy Year” 18 Latihan • Buat program untuk: – mengambil string dari keyboard – membalik susunan karakter dalam string tsb – menampilkan string yg sudah dibalik ke layar monitor Contoh: String yg diinput : Ditampilkan : KASUR RUSAK 19 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 20 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) ) 21 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 ? 22 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); Apa yang akan dicetak oleh kode berikut: char s[] = “Bina Nusantara”; for(char *p = s; *p; p++) if(isupper(*p)) *p = tolower(*p); printf(“\n%s “, s); 23 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; } } 24
© Copyright 2024 Paperzz