T0616 ALGORITMA DAN PEMROGRAMAN (18) UNIVERSITAS BINA NUSANTARA

Download Report

Transcript T0616 ALGORITMA DAN PEMROGRAMAN (18) UNIVERSITAS BINA NUSANTARA

T0616
ALGORITMA DAN PEMROGRAMAN
(18)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
6/28/2016
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
6/28/2016
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.
6/28/2016
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.
6/28/2016
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.
6/28/2016
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);
}
6/28/2016
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.
6/28/2016
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.
6/28/2016
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);
}
6/28/2016
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”;
6/28/2016
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”;
6/28/2016
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.
6/28/2016
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)
6/28/2016
 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.
6/28/2016
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.
6/28/2016
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'
6/28/2016
• 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…”
6/28/2016
T0616 - Algoritma dan Pemrograman
17