download

T0616
ALGORITMA DAN PEMROGRAMAN
(18)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
7/11/2017
T0616 - Algoritma dan Pemrograman
1
STRING
•
•
•
•
•
•
•
•
•
DEFINISI DAN DEKLARASI
KARAKTER VS STRING
KONSTANTA STRING VS VARIABEL STRING.
FUNGSI I/O STRING: GETS(), PUTS().
NILAI AWAL STRING.
HEADER FILE STRING.H
POINTER DAN STRING
KONSTANTA POINTER VS VARIABEL POINTER
ARRAY OF STRING
7/11/2017
T0616 - Algoritma dan Pemrograman
2
DEFINISI STRING
• STRING C ADALAH ARRAY OF CHARACTER
YANG DIAKHIRI DENGAN NULL CHARACTER.
• STRING ADALAH SEKUEN KARAKTER YANG
DIAPIT OLEH DOUBLE QUOTE “ “.
• CHAR S1[ ] = “SAYA BINUSIAN”;
• SIMBOL NULL CHARACTER ADALAH ‘\0’ DENGAN
NILAI ASCII 0
• NULL CHARACTER OTOMATIS DITAMBAHKAN
OLEH SISTEM.
• STRING BUKAN TIPE DATA DI C.
7/11/2017
T0616 - Algoritma dan Pemrograman
3
KARAKTER VS STRING
• KARAKTER 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.
7/11/2017
T0616 - Algoritma dan Pemrograman
4
KONSTANTA VS VARIABEL
STRING
• KONSATANTA 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.
7/11/2017
T0616 - Algoritma dan Pemrograman
5
KONSTANTA VS VARIABEL
STRING
• CONTOH
#include<stdio.h>
main( ) {
char namaAnda[21];
printf(“\nInput nama Anda “);
scanf(“%s”, namaAnda);
Susi
printf(“\nNama Anda: %s”, namaAnda);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
6
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”, namaAnda); DIISI “Susi
Andini” MAKA HANYA “Susi” YANG AKAN DIAMBIL.
7/11/2017
T0616 - Algoritma dan Pemrograman
7
FUNGASI I/O STRING: GETS(),
PUTS()
• 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.
7/11/2017
T0616 - Algoritma dan Pemrograman
8
FUNGASI I/O STRING: GETS(),
PUTS()
• CONTOH
main() {
char namaJurusan[21];
puts(“Input nama jurusan Anda”);
gets(namaJurusan);
puts(“Nama jurusan Anda :”);
puts(namaJurusan);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
9
NILAI AWAL STRING
• KARAKTER INDIVIDUAL DIAPIT OLEH ‘ ‘
• CHAR NAMA[ ] = {‘S’, ‘U’, ‘S’, ‘I’, ‘\0’};
• CHAR NAMA[5] = {‘S’, ‘U’, ‘S’, ‘I’, ‘\0’};
• CHAR NAMA[4] = {‘S’, ‘U’, ‘S’, ‘I’, ‘\0’};
//ERROR
• SEKUEN KARAKTER DIAPIT OLEH “ “
• CHAR NAMA[ ] = “SUSI”;
• CHAR NAMA[5] = “SUSI”;
• CHAR NAMA[4] = “SUSI”;
7/11/2017
T0616 - Algoritma dan Pemrograman
//ERROR
10
NILAI AWAL STRING
• CONTOH LAIN
• CHAR A[ ] = {‘B’, ‘I’, ‘N’, ‘U’, ‘S’};
• CHAR B[ ] = “BINUS”;
• CHAR C[8] = “BINUS”;
7/11/2017
T0616 - Algoritma dan Pemrograman
//NOT A STRING
//OK
//OK
11
HEADER FILE STRING.H
• BERISI FUNGSI-FUNGSI UNTUK MEMANIPULASI
STRING.
• STRLEN() : MENGHASILKAN PANJANG STRING.
TIDAK MENGHITUNG KARAKTER NULL.
• STRLEN(“SUSI”);
// 4
• STRCPY(S1,S2) : COPY S2 KE S1.
• STRNCPY(S1,S2,N) : COPY N KARAKTER
PERTAMA S2 KE S1.
7/11/2017
T0616 - Algoritma dan Pemrograman
12
HEADER FILE STRING.H
•
•
•
•
•
CHAR S1[ ] = “ABCDEF”;
CHAR S2[ ] = “XYZ”;
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(), STRNCAT() : “CATENATE” STRING
TOGETHER. OPY KE AKHIR STRING.
• STRCAT(S1,S2);
• STRNCAT(S1,S2,2)
7/11/2017
 S1=“ABCDEFXYZ”, S2=“XYZ”
 S1=“ABCDEFXY”, S2=“XYZ”
T0616 - Algoritma dan Pemrograman
13
POINTER DAN STRING
#include<stdio.h>
main() {
static char x [] = “string sebagai array dimensi satu”;
char *y = “string sebagai variabel pointer”;
printf(“%s”, x);
printf(“%s”, y);
}
• X ADALAH STRING VERSI ARRAY, SEDANGKAN Y
ADALAH STRING VERSI POINTER.
7/11/2017
T0616 - Algoritma dan Pemrograman
14
KONSTANTA POINTER VS
VARIABEL POINTER
• APA BEDA
• CHAR *NAMA_FAKULTAS = “FASILKOM”;
• DAN
• STATIC CHAR NAMA_FAKULTAS [ ] = “FASILKOM”;
• YANG PERTAMA ADALAH STRING VERSI
POINTER SEDANGKAN YANG KE DUA ADALAH
STRING VERSI ARRAY.
• VERSI ARRAY ADALAH KONSTANTA POINTER.
NILAINYA TIDAK DAPAT DIUBAH.
• VERSI POINTER ADALAH VARIABEL POINTER
SEHINGGA NILAINYA DAPAT DIUBAH.
7/11/2017
T0616 - Algoritma dan Pemrograman
15
ARRAY OF STRING
• VERSI 1: char x[3][5];
0
0
1
2
1
2
3
'C' '\0'
'C' '+' '+' '\0'
'C' '#' '\0'
7/11/2017
• VERSI 2: char* x[3];
4
x[0]
x[1]
x[2]
T0616 - Algoritma dan Pemrograman
'C' '\0'
'C' '+' '+' '\0'
'C' '#' '\0'
16
THE END
“...ALL YOU NEED IS LOVE…”
7/11/2017
T0616 - Algoritma dan Pemrograman
17