SlideShare a Scribd company logo
Pendalaman String
(C++)
Tim Olimpiade Komputer Indonesia
1/24
Bagian 1
Pengolahan String
2/24
String pada C++
Seperti yang disinggung sebelumnya, terdapat dua macam string
yang dapat digunakan di C++.
1. cstring: string yang diwariskan dari bahasa C, yang
merupakan leluhur bahasa C++.
2. std string: string yang dimiliki oleh C++.
Kita akan membahasnya satu per satu.
3/24
Bagian 2
cstring
4/24
Pengenalan cstring
• Dalam bahasa C dan C++, cstring dibuat menggunakan ”null
terminated array of char”.
• Penggunaannya sesederhana membuat array char.
• Karena berasal dari bahasa C, cstring dapat berinteraksi
dengan scanf dan printf secara langsung.
#include <cstdio>
char s[1001];
int main() {
scanf("%s", s);
printf("%sn", s);
}
5/24
Representasi cstring
• Misalkan kita memasukkan ”Pak Dengklek” pada program
sebelumnya.
• Array s akan berisi karakter-karakter penyusun ”Pak
Dengklek”, diakhiri dengan karakter ’0’.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
P a k D e n g k l e k  0 ...
• Karakter ’0’ digunakan oleh C/C++ untuk menandai akhir
dari string.
• Jadi, meskipun terdapat 1001 elemen pada s, C/C++ tahu
string yang direpresentasikan hanya sampai elemen ke-11 saja.
6/24
Representasi cstring
• Perhatikan bahwa s hanya dapat menampung paling banyak
1000 karakter.
• Meskipun memiliki 1001 elemen, sebuah elemen sudah
dipesan untuk menempatkan karakter 0.
• Apabila string yang dibaca lebih dari 1000 karakter, program
tidak mengalami error. Namun, program akan bekerja dengan
tidak terprediksi.
• Pastikan ukuran array dibuat sebesar ukuran maksimal
masukan yang mungkin.
7/24
Pengolahan cstring
• Seperti array pada umumnya, Anda dapat mengolah setiap
elemennya secara independen.
• Sebagai contoh, program berikut mengubah setiap karakter
dari string yang dibaca menjadi ’a’.
int main() {
scanf("%s", s);
for (int i = 0; s[i] != ’0’; i++) {
s[i] = ’a’;
}
printf("%sn", s);
}
8/24
Mencari Panjang cstring
• Kita dapat menggunakan fungsi strlen untuk mencari
panjang suatu cstring.
• Fungsi ini disediakan oleh STL ”cstring”.
Contoh:
#include <cstdio>
#include <cstring>
char s[1001];
int main() {
scanf("%s", s);
printf("%dn", strlen(s));
}
9/24
Penggunaan strlen
• Fungsi strlen memiliki kompleksitas O(N), dengan N adalah
panjang dari string masukan.
• Penyebabnya adalah strlen sebenarnya mencari di indeks
keberapakah 0 berada.
• Apabila hendak digunakan dalam perulangan, simpan dulu
panjangnya ke dalam suatu variabel untuk menghindari
pemanggilan yang berulang-ulang.
Contoh:
// Buruk, O(N^2)
for (int i = 0; i < strlen(s); i++) {
printf("%c", s[i]);
}
// Baik, O(N)
int len = strlen(s);
for (int i = 0; i < len; i++) {
printf("%c", s[i]);
}
10/24
Membandingkan cstring
• Untuk membandingkan 2 cstring s dan t secara leksikografis,
gunakan strcmp(s,t).
• Nilai kembaliannya memiliki arti sebagai berikut:
• Negatif, artinya s lebih awal dari t.
• Nol, artinya s sama dengan t.
• Positif, artinya s lebih akhir dari t.
• Kompleksitasnnya O(N), dengan N adalah panjang string
terkecil yang dibandingkan.
Contoh penggunaan:
#include <cstdio>
#include <cstring>
char s[1001];
char t[1001];
int main() {
scanf("%s %s", s, t);
printf("%dn", strcmp(s, t));
}
11/24
Mengisi Array
• Untuk mengisi array arr dengan x, gunakan memset(arr,
x, sizeof(arr)).
• Nilai x terbatas pada tipe data char, atau angka di antara
-128 sampai 127 saja.
• Fungsi ini biasanya juga dimanfaatkan untuk menginisialisasi
array bilangan dengan 0 atau -1.
Contoh:
#include <cstdio>
#include <cstring>
char s[1001];
int arr[101];
int main() {
memset(s, ’x’, sizeof(s));
memset(arr, -1, sizeof(arr));
printf("%c %dn", s[0], arr[0]);
}
12/24
Fungsi cstring Lainnya
• Terdapat beberapa fungsi cstring lain seperti strcpy,
strncpy, dan strstr.
• Fungsi-fungsi tersebut tidak dibahas pada materi ini.
• Anda dapat mempelajarinya di dokumentasi C/C++ lebih
lanjut, seperti di http://www.cplusplus.com.
13/24
Bagian 3
std string
14/24
Representasi string
• String pada C++ direpresentasikan dengan struktur array
dinamis.
• Ukurannya dapat berubah sesuai dengan ukuran string.
• Oleh sebab itu, Anda tidak perlu mendeklarasikan ukuran
terbesar yang mungkin.
• Anda dapat mengakses dan mengubah nilai karakter dari
suatu indeks string secara independen.
15/24
Mencari Panjang string
• Untuk mencari panjang dari string s, cukup panggil
s.length().
• Kompleksitas pemanggilannya adalah O(1).
// O(N)
for (int i = 0; i < s.length(); i++) {
printf("%c", s[i]);
}
16/24
Mencari Substring
• Untuk mencari posisi suatu substring t dari string s, gunakan
s.find(t).
Contoh:
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "Pak Dengklek berternak";
string t1 = "Dengklek";
string t2 = "pak";
string t3 = "klek";
printf("%dn", s.find(t1)); // 4
printf("%dn", s.find(t2)); // -1 (tak ditemukan)
printf("%dn", s.find(t3)); // 8
}
17/24
Mengambil Substring
• Untuk mengambil substring dari indeks i sebanyak n karakter
dari string s, gunakan s.substr(i, n).
Contoh:
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "Pak Dengklek berternak";
printf("%sn", s.substr(0, 6).c_str()); // Pak De
printf("%sn", s.substr(2, 1).c_str()); // k
}
18/24
Menghapus Substring
• Untuk menghapus substring dari indeks i sebanyak n karakter
dari string s, gunakan s.erase(i, n).
Contoh:
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "Pak Dengklek berternak";
s.erase(1, 3);
printf("%sn", s.c_str()); // PDengklek berternak
}
19/24
Menyisipkan String
• Untuk menyisipkan string t ke string s bermula di indeks i,
gunakan s.insert(i, t).
Contoh:
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "Pak Dengklek berternak";
string t = "dan Bu ";
s.insert(4, t);
printf("%sn", s.c_str()); // Pak dan Bu Dengklek
berternak
}
20/24
Operasi Tambahan: Penempelan String
• Pada std string, hal ini dapat dilakukan cukup dengan operasi
’+’, layaknya operasi numerik.
Contoh:
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "Pak";
string t = "Dengklek";
string gabung = s + t;
printf("%sn", gabung.c_str()); // PakDengklek
}
21/24
Operasi Char
• Setiap karakter dari string memiliki tipe char.
• Kita dapat melakukan operasi penambahan atau pengurangan
pada char, yang akan dioperasikan pada kode ASCII-nya.
Contoh:
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "abc";
s[0]++;
s[1] += 2;
s[2] -= 2;
printf("%sn", s.c_str()); // bda
}
22/24
Operasi Char (lanj.)
• Operasi ini dapat digunakan untuk mengubah karakter suatu
string.
• Operasi yang umum adalah mengubah dari huruf kecil ke
besar, dengan cara mengurangkan char dengan selisih antara
ASCII ’a’ dengan ’A’.
• Cara sebaliknya akan mengubah dari huruf besar ke huruf
kecil.
• Hafalkan ASCII ’a’ adalah 97, dan ’A’ adalan 65.
#include <cstdio>
#include <string>
using namespace std;
int main() {
string s = "toki";
for (int i = 0; i < s.size(); i++) {
s[i] -= ’a’ - ’A’;
}
printf("%sn", s.c_str()); // TOKI
}
23/24
Selanjutnya...
• Pembelajaran kalian tentang C++ sudah cukup untuk bisa
menuliskan algoritma-algoritma kompleks.
• Berikutnya kita akan mempelajari hal-hal yang lebih berkaitan
dengan algoritma, bukan sekedar belajar bahasa.
24/24

More Related Content

PPTX
Sistem Informasi Manajemen - SOFTWARE
PPT
1. pengenalan python
PPT
DOCX
Laporan Praktikum Modul 2 (Instalasi Windows)
PPTX
Konteks, Data Flow Diagram dan Kamus Data
PPTX
Intermediate code kode antara
DOCX
Soal teknologi informasi dan komunikasi kelas 9
DOC
4 Science Lesson Plan-Technology.doc
Sistem Informasi Manajemen - SOFTWARE
1. pengenalan python
Laporan Praktikum Modul 2 (Instalasi Windows)
Konteks, Data Flow Diagram dan Kamus Data
Intermediate code kode antara
Soal teknologi informasi dan komunikasi kelas 9
4 Science Lesson Plan-Technology.doc

What's hot (20)

PDF
Modul praktikum-pemrograman java dgn netbeans
DOCX
Laporan PBO Pratikum 3
PDF
Pertemuan 3 dan 4 SBD
DOCX
Teknologi dan Informasi
DOCX
Tugas program sitti zulaeha
PPT
Pengantar Database
DOC
Rumus visual basic
PPTX
Tipe data dan variabel
PDF
Makalah prosedur dan fungsi
PDF
Algoritma dan Struktur Data (Python) - Perulangan
PPTX
Presentasi konsep dasar html
PPTX
Materi-Strategi-Algoritmik-Dan-Pemrograman-Kelas-XI.pptx
PDF
Bahasa Pemrograman
PPT
9. tabel informasi
PPTX
2 alfabet dan string
DOCX
Sejarah Perkembangan RAM
PDF
001 bab i dasar-dasar pc
PDF
02.logika
DOCX
KUMPULAN SOAL MODUL LATIHAN - PROGRAM PROFESI GURU (PPG) - TEKNIK KOMPUTER & ...
DOCX
Aljabar boolean MK matematika diskrit
Modul praktikum-pemrograman java dgn netbeans
Laporan PBO Pratikum 3
Pertemuan 3 dan 4 SBD
Teknologi dan Informasi
Tugas program sitti zulaeha
Pengantar Database
Rumus visual basic
Tipe data dan variabel
Makalah prosedur dan fungsi
Algoritma dan Struktur Data (Python) - Perulangan
Presentasi konsep dasar html
Materi-Strategi-Algoritmik-Dan-Pemrograman-Kelas-XI.pptx
Bahasa Pemrograman
9. tabel informasi
2 alfabet dan string
Sejarah Perkembangan RAM
001 bab i dasar-dasar pc
02.logika
KUMPULAN SOAL MODUL LATIHAN - PROGRAM PROFESI GURU (PPG) - TEKNIK KOMPUTER & ...
Aljabar boolean MK matematika diskrit
Ad

Similar to CPP Pendalaman String (20)

PPT
Pertemuan4.ppt
PPTX
Algoritma&Pemrograman C++ Pertemuan 10
PPTX
String baru
PPT
PDF
Pemrograman C++ - String
PPTX
Algoritma&Pemrograman C++ Operasi string
PDF
Arrays c++
PPTX
Materi kuliah 17 string
PDF
5. string
PDF
Pertemuan 6 Fungsi String
PDF
6_String.pdf
PDF
6_String.pdf
PDF
OOP - Character class dan String
PPTX
Fungsi string
PDF
Pemrograman #11
PPTX
207 p03
PPTX
ARI RUDIANSYAH 23110064 STT shgshgghdg.pptx
PPTX
Materi kuliah 17 string
PPTX
Materi kuliah 17 string
 
DOCX
Algoritma a
Pertemuan4.ppt
Algoritma&Pemrograman C++ Pertemuan 10
String baru
Pemrograman C++ - String
Algoritma&Pemrograman C++ Operasi string
Arrays c++
Materi kuliah 17 string
5. string
Pertemuan 6 Fungsi String
6_String.pdf
6_String.pdf
OOP - Character class dan String
Fungsi string
Pemrograman #11
207 p03
ARI RUDIANSYAH 23110064 STT shgshgghdg.pptx
Materi kuliah 17 string
Materi kuliah 17 string
 
Algoritma a
Ad

Recently uploaded (9)

DOCX
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
PPTX
Materi_Array_Karakter_String untuk kelas XI sma.pptx
PPTX
Materi asdsa asd asd sad sa dsa dsa d sa
PPTX
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PDF
Modul_Pemula_Merakit_Komputer untuk smppdf
PDF
Rekomendasi Riset Lanjutan : perspektif_futurologis.pdf
PPTX
Implementasi Microservices pada Manufaktur
DOCX
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
PPT
pengantar-sistem-informasi manajemen.ppt
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
Materi_Array_Karakter_String untuk kelas XI sma.pptx
Materi asdsa asd asd sad sa dsa dsa d sa
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
Modul_Pemula_Merakit_Komputer untuk smppdf
Rekomendasi Riset Lanjutan : perspektif_futurologis.pdf
Implementasi Microservices pada Manufaktur
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
pengantar-sistem-informasi manajemen.ppt

CPP Pendalaman String

  • 1. Pendalaman String (C++) Tim Olimpiade Komputer Indonesia 1/24
  • 3. String pada C++ Seperti yang disinggung sebelumnya, terdapat dua macam string yang dapat digunakan di C++. 1. cstring: string yang diwariskan dari bahasa C, yang merupakan leluhur bahasa C++. 2. std string: string yang dimiliki oleh C++. Kita akan membahasnya satu per satu. 3/24
  • 5. Pengenalan cstring • Dalam bahasa C dan C++, cstring dibuat menggunakan ”null terminated array of char”. • Penggunaannya sesederhana membuat array char. • Karena berasal dari bahasa C, cstring dapat berinteraksi dengan scanf dan printf secara langsung. #include <cstdio> char s[1001]; int main() { scanf("%s", s); printf("%sn", s); } 5/24
  • 6. Representasi cstring • Misalkan kita memasukkan ”Pak Dengklek” pada program sebelumnya. • Array s akan berisi karakter-karakter penyusun ”Pak Dengklek”, diakhiri dengan karakter ’0’. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ... P a k D e n g k l e k 0 ... • Karakter ’0’ digunakan oleh C/C++ untuk menandai akhir dari string. • Jadi, meskipun terdapat 1001 elemen pada s, C/C++ tahu string yang direpresentasikan hanya sampai elemen ke-11 saja. 6/24
  • 7. Representasi cstring • Perhatikan bahwa s hanya dapat menampung paling banyak 1000 karakter. • Meskipun memiliki 1001 elemen, sebuah elemen sudah dipesan untuk menempatkan karakter 0. • Apabila string yang dibaca lebih dari 1000 karakter, program tidak mengalami error. Namun, program akan bekerja dengan tidak terprediksi. • Pastikan ukuran array dibuat sebesar ukuran maksimal masukan yang mungkin. 7/24
  • 8. Pengolahan cstring • Seperti array pada umumnya, Anda dapat mengolah setiap elemennya secara independen. • Sebagai contoh, program berikut mengubah setiap karakter dari string yang dibaca menjadi ’a’. int main() { scanf("%s", s); for (int i = 0; s[i] != ’0’; i++) { s[i] = ’a’; } printf("%sn", s); } 8/24
  • 9. Mencari Panjang cstring • Kita dapat menggunakan fungsi strlen untuk mencari panjang suatu cstring. • Fungsi ini disediakan oleh STL ”cstring”. Contoh: #include <cstdio> #include <cstring> char s[1001]; int main() { scanf("%s", s); printf("%dn", strlen(s)); } 9/24
  • 10. Penggunaan strlen • Fungsi strlen memiliki kompleksitas O(N), dengan N adalah panjang dari string masukan. • Penyebabnya adalah strlen sebenarnya mencari di indeks keberapakah 0 berada. • Apabila hendak digunakan dalam perulangan, simpan dulu panjangnya ke dalam suatu variabel untuk menghindari pemanggilan yang berulang-ulang. Contoh: // Buruk, O(N^2) for (int i = 0; i < strlen(s); i++) { printf("%c", s[i]); } // Baik, O(N) int len = strlen(s); for (int i = 0; i < len; i++) { printf("%c", s[i]); } 10/24
  • 11. Membandingkan cstring • Untuk membandingkan 2 cstring s dan t secara leksikografis, gunakan strcmp(s,t). • Nilai kembaliannya memiliki arti sebagai berikut: • Negatif, artinya s lebih awal dari t. • Nol, artinya s sama dengan t. • Positif, artinya s lebih akhir dari t. • Kompleksitasnnya O(N), dengan N adalah panjang string terkecil yang dibandingkan. Contoh penggunaan: #include <cstdio> #include <cstring> char s[1001]; char t[1001]; int main() { scanf("%s %s", s, t); printf("%dn", strcmp(s, t)); } 11/24
  • 12. Mengisi Array • Untuk mengisi array arr dengan x, gunakan memset(arr, x, sizeof(arr)). • Nilai x terbatas pada tipe data char, atau angka di antara -128 sampai 127 saja. • Fungsi ini biasanya juga dimanfaatkan untuk menginisialisasi array bilangan dengan 0 atau -1. Contoh: #include <cstdio> #include <cstring> char s[1001]; int arr[101]; int main() { memset(s, ’x’, sizeof(s)); memset(arr, -1, sizeof(arr)); printf("%c %dn", s[0], arr[0]); } 12/24
  • 13. Fungsi cstring Lainnya • Terdapat beberapa fungsi cstring lain seperti strcpy, strncpy, dan strstr. • Fungsi-fungsi tersebut tidak dibahas pada materi ini. • Anda dapat mempelajarinya di dokumentasi C/C++ lebih lanjut, seperti di http://www.cplusplus.com. 13/24
  • 15. Representasi string • String pada C++ direpresentasikan dengan struktur array dinamis. • Ukurannya dapat berubah sesuai dengan ukuran string. • Oleh sebab itu, Anda tidak perlu mendeklarasikan ukuran terbesar yang mungkin. • Anda dapat mengakses dan mengubah nilai karakter dari suatu indeks string secara independen. 15/24
  • 16. Mencari Panjang string • Untuk mencari panjang dari string s, cukup panggil s.length(). • Kompleksitas pemanggilannya adalah O(1). // O(N) for (int i = 0; i < s.length(); i++) { printf("%c", s[i]); } 16/24
  • 17. Mencari Substring • Untuk mencari posisi suatu substring t dari string s, gunakan s.find(t). Contoh: #include <cstdio> #include <string> using namespace std; int main() { string s = "Pak Dengklek berternak"; string t1 = "Dengklek"; string t2 = "pak"; string t3 = "klek"; printf("%dn", s.find(t1)); // 4 printf("%dn", s.find(t2)); // -1 (tak ditemukan) printf("%dn", s.find(t3)); // 8 } 17/24
  • 18. Mengambil Substring • Untuk mengambil substring dari indeks i sebanyak n karakter dari string s, gunakan s.substr(i, n). Contoh: #include <cstdio> #include <string> using namespace std; int main() { string s = "Pak Dengklek berternak"; printf("%sn", s.substr(0, 6).c_str()); // Pak De printf("%sn", s.substr(2, 1).c_str()); // k } 18/24
  • 19. Menghapus Substring • Untuk menghapus substring dari indeks i sebanyak n karakter dari string s, gunakan s.erase(i, n). Contoh: #include <cstdio> #include <string> using namespace std; int main() { string s = "Pak Dengklek berternak"; s.erase(1, 3); printf("%sn", s.c_str()); // PDengklek berternak } 19/24
  • 20. Menyisipkan String • Untuk menyisipkan string t ke string s bermula di indeks i, gunakan s.insert(i, t). Contoh: #include <cstdio> #include <string> using namespace std; int main() { string s = "Pak Dengklek berternak"; string t = "dan Bu "; s.insert(4, t); printf("%sn", s.c_str()); // Pak dan Bu Dengklek berternak } 20/24
  • 21. Operasi Tambahan: Penempelan String • Pada std string, hal ini dapat dilakukan cukup dengan operasi ’+’, layaknya operasi numerik. Contoh: #include <cstdio> #include <string> using namespace std; int main() { string s = "Pak"; string t = "Dengklek"; string gabung = s + t; printf("%sn", gabung.c_str()); // PakDengklek } 21/24
  • 22. Operasi Char • Setiap karakter dari string memiliki tipe char. • Kita dapat melakukan operasi penambahan atau pengurangan pada char, yang akan dioperasikan pada kode ASCII-nya. Contoh: #include <cstdio> #include <string> using namespace std; int main() { string s = "abc"; s[0]++; s[1] += 2; s[2] -= 2; printf("%sn", s.c_str()); // bda } 22/24
  • 23. Operasi Char (lanj.) • Operasi ini dapat digunakan untuk mengubah karakter suatu string. • Operasi yang umum adalah mengubah dari huruf kecil ke besar, dengan cara mengurangkan char dengan selisih antara ASCII ’a’ dengan ’A’. • Cara sebaliknya akan mengubah dari huruf besar ke huruf kecil. • Hafalkan ASCII ’a’ adalah 97, dan ’A’ adalan 65. #include <cstdio> #include <string> using namespace std; int main() { string s = "toki"; for (int i = 0; i < s.size(); i++) { s[i] -= ’a’ - ’A’; } printf("%sn", s.c_str()); // TOKI } 23/24
  • 24. Selanjutnya... • Pembelajaran kalian tentang C++ sudah cukup untuk bisa menuliskan algoritma-algoritma kompleks. • Berikutnya kita akan mempelajari hal-hal yang lebih berkaitan dengan algoritma, bukan sekedar belajar bahasa. 24/24