7.1 Bab 07 Menginput Nilai melalui Keyboard 103
5 Ilustrasi menginput data melalui keyboard 5 Memory SCREEN Data yang diketik melalui keyboard harus diterima oleh sebuah variabel. 103
1). Instrusi input tanpa menggunakan format, 7.1. Menginput Data Melalui Keyboard Pada Program C 1). Instrusi input tanpa menggunakan format, yang menggunakan instruksi : gets(var) untuk karakter string var = getche() untuk karakter var = getchar() untuk karakter var = getch() untuk karakter 2). Instrusi input yang menggunakan format. yang menggunakan instruksi : scanf() 104
Format yang digunakan inilah yang menentukan apakah data yang diinput dianggap sebagai karakter, numerik integer, floating point atau double. Berikut ini format yang digunakan untuk input. Data yang diinput dianggap bertipe : format %c %d %i %e %f %g %s %o %x character decimal integer double & floating point string octal hexadecimal 104
#include<stdio.h> void main() { char S[10]; 7.1.1. Menginput Data Melalui Keyboard Tanpa Format Pada Program C 1). Menginput string dengan gets(var) #include<stdio.h> void main() { char S[10]; printf(“Inputkan String: “); gets(S); printf(“%s”, S); } Apabila yang diinput adalah ABCDEFG maka terlihat dilayar : Inputkan String: ABCDEFG ABCDEFG 105
dengan gets(S); bila diinput : ABCDEFG<Enter> 0 1 2 3 4 5 6 7 8 9 S[0] S[1] S[9] disiapkan char S[10]; dengan gets(S); bila diinput : ABCDEFG<Enter> Maka isi array S[ ] 0 1 2 3 4 5 6 7 8 9 A B C D E F G \0 NULL Bila yang diinput : ABC DEF maka isi S menjadi A B C D E F \0 105
106 Beberapa contoh hasil input dengan gets(var); Keterangan & bila dicetak dengan : printf( “%s “, S ); 106 Bila data yang diinput Akan disimpan dalam variable S 0 1 2 3 4 5 6 7 8 9 \0 = Tanda untuk batas nilai Tercetak : ABC ABC A B C \0 Tercetak : ABC DE ABCbDE A B C D E \0 b= blank (space) tercetak : ABCbb ABCbb A B C \0 tercetak : bbABC bbABC A B \0 Tercetak : “ABC” “ABC” “ A B C “ \0 Tercetak : ‘ ABC ’ ‘ A B C ‘ \0 ‘ABC’ Untuk S[10] maksimum 9 karakter ABCDEFGHI A B C D E F G H I \0 Error lebih dari 9 karakter ABCDEFGHIJ Tercetak karakter : 12345 12345 1 2 3 4 5 \0 Kalau hanya diinput <Enter> maka S tak ada isinya kalau dicetak, tak ada yang tercetak \0
106 Perhatikan dua program berikut ini. Bila diinput ABC Atau : #include<stdio.h> void main() { char S[10]; int I; printf(“Inputkan String : ); gets(S); I = 0; while (S[I] != ‘\0’) { printf(“%c\n”, S[I]); I++; } } #include<stdio.h> void main() { char S[10]; int I; printf(“Inputkan String : ); gets(S); for(I=0; (S[I] != ‘\0’); I++) printf(“%c\n”, S[I]); } Bila diinput ABC maka akan tercetak : A B C Bila diinput ABC maka akan tercetak : A B C 0 1 2 3 4 5 6 7 8 9 A B C \0 106
2). Menginput sebuah character dengan var = getche() #include<stdio.h> #include<conio.h> void main() { char C; printf(“Inputkan Sebuah Karakter: “ ); C = getche(); printf(“\n%c”, C); } Apabila yang diINPUT karakter A , tanpa mengetik <Enter> maka terlihat dilayar : Inputkan Sebuah Karakter : A A Agar dapat menggunakan instruksi getche(), diperlukan : #include<conio.h> Variabel harus bertipe char 107
A A \r 107 Bila yang di input Yang tersimpan dalam var C Keterangan Tercetak : A A Bila yang diketik bukan sebuah karakter, tapi hanya menekan <Enter>, maka isi C adalah ‘\r’ dan bila dicetak tak ada yang tercetak di layar \r <Enter> Bila hanya menekan <Enter>, maka N akan berisi Nilai ASCII 13 atau carriage return sehingga bila ditest dengan : if (C == 13) atau dengan : if (C == ‘\r’ ) maka akan menghasilkan nilai TRUE. \r = carriage return 107
Beberapa contoh hasil input dengan var = getche( ); #include<stdio.h> #include<conio.h> void main() { char C1, C2, C3, C4; printf(“Ketik Password Anda: “); C1 = getche(); C2 = getche(); C3 = getche(); C4 = getche(); } A B C D C1 C2 C3 C4 Bila diketik : ABCD, maka dilayar akan terlihat sebagai berikut : Ketik Password Anda: ABCD 108
#include<stdio.h> #include<conio.h> void main() { Bila password diganti dengan karakter X #include<stdio.h> #include<conio.h> void main() { char N1, N2, N3, N4; printf(“Ketik Password Anda : ); N1 = getche(); printf(“\bX”); N2 = getche(); printf(“\bX”); N3 = getche(); printf(“\bX”); N4 = getche(); printf(“\bX”); } Bila program ini dijalankan, apapun karakter yang diketik melalui keyboard (sebanyak 4 karakter) akan terlihat sebagai berikut : Ketik Pasword Anda: XXXX Semua yang diketik diganti dengan : X \b maksudnya back space mundur satu spasi 108
terlihat dilayar : XXXX #include<stdio.h> #include<conio.h> void main() { char C[4]; int I; printf(“Ketik Password Anda : ); I=0; while(I<4) { C[I] = getche(); printf(“\bX”); I++; } printf(“\nPassword Anda Adalah : ”); { printf(“%c”,C[I]); } Disediakan : Misal diketik : ABCD maka isi C[ ] adalah ABCD, tapi yang terlihat dilayar : XXXX 0 1 2 3 A B C D 108
108 Bila diketik : ABCD maka yang terlihat dilayar : #include<stdio.h> #include<conio.h> void main() { char C[4]; int I; printf(“Ketik Password Anda : ); I=0; while(I<4) { C[I] = getche(); printf(“\bX”); I++; } printf(“\nPassword Anda Adalah : ”); { printf(“%c”,C[I]); } Bila diketik : ABCD maka yang terlihat dilayar : Ketik Password Anda : XXXX Password Anda Adalah : ABCD 108
Apabila yang diinput adalah : A maka terlihat dilayar : 3). Menginput sebuah character dengan var = getchar() #include<stdio.h> void main() { char C; printf(“Inputkan Sebuah Karakter : “ ); C = getchar(); printf(“%c”, C); } Catatan : Bila diketik lebih dari satu karakter, maka hanya karakter pertama yang diambil Apabila yang diinput adalah : A maka terlihat dilayar : Inputkan Sebuah Karakter : A A 109
109 Bila yang di input Yang tersimpan dalam var C Keterangan A<Enter> Tercetak : A A Bila yang diketik bukan sebuah karakter, tapi hanya menekan <Enter> maka C akan diisi dengan ‘\n’ dan bila dicetak, tidak ada yang tercetak, tapi mengakibatkan turun satu baris (line feed). <Enter> \n Bila hanya menekan <Enter> maka C akan berisi Nilai ASCII 10 atau line feed sehingga bila ditest dengan : if (C == 10) atau dengan : if (C == ‘\n’ ) maka akan menghasilkan nilai TRUE. \n = line feed 109
110 #include<stdio.h> void main() { char C; 4). Menginput sebuah character dengan var = getch() #include<stdio.h> void main() { char C; printf(“Inputkan Sebuah Karakter : “ ); C = getch(); printf(“%c”, C); } Apabila yang diINPUT adalah A maka terlihat dilayar : Inputkan Sebuah Karakter : A Hasil ketikan melalui keyboard TIDAK TERLIHAT diketik tanpa <Enter> Hasil instruksi printf(“%c”, C); 110
110 Bila yang Yang tersimpan di input dalam var C Keterangan Tercetak : A A A Bila yang diketik bukan sebuah karakter, tapi hanya menekan <Enter>, maka isi N adalah ‘\r’ dan bila dicetak tak ada yang tercetak di layar <Enter> \r Bila hanya menekan <Enter> maka C akan berisi Nilai ASCII 13 atau carriage return sehingga bila ditest dengan : if (N == 13) atau dengan : if (N == ‘\r’ ) maka akan menghasilkan nilai TRUE. \r = carriage return 110
110 7.1.2. Menginput Data Melalui Keyboard Dengan Format Pada Program C 1). Menginput character dengan scanf() a. Menginput sebuah karakter #include<stdio.h> void main() { char C; printf(“Inputkan Sebuah Karakter: “ ); scanf(“%c”, &C); printf(“%c”, C); } Penulisan format seperti ini mempunyai efek yang sama “%c”, atau “ % c”, atau “ %c” Ada spasi atau blank sebelum %c Apabila yang diinput adalah A maka terlihat dilayar : Inputkan Sebuah Karakter : A A 110
110 Yang tersimpan Bila yang dalam var C Keterangan di input A Tercetak : A A AB Tercetak : A, yang diambil hanya satu karakter karakter selebihnya tidak diambil A ‘A’ Tercetak : ‘ ‘ 65 Tercetak : 6 6 Bila yang diketik bukan sebuah karakter, tapi hanya menekan <Enter> maka C akan diisi dengan ‘\n’ dan bila dicetak, tidak ada yang tercetak, tapi mengakibatkan turun satu baris (line feed). \n Bila hanya menekan <Enter> maka N akan berisi Nilai ASCII 10 atau line feed (\n = line feed) sehingga bila ditest dengan : if (C == 10) atau dengan : if (C == ‘\n’ ) maka akan menghasilkan nilai TRUE. 110
112 b. Menginput dua buah karakter dengan 2 format tanpa disisipkan koma #include<stdio.h> void main() { char C1, C2; printf(“Inputkan Dua Buah Karakter : “ ); scanf(“%c%c”, &C1,&C2); printf(“%c %c”, C1, C2); printf(“ Selesai”); } Mempunyai efek yang sama (baik cara menginput data maupun hasilnya) bila instruksi input [ scanf() ] ditulis menjadi dua baris instruksi sebagai berikut : scanf(“%c”, &C1); scanf(“%c”, &C2); Apabila yang diinput adalah AB<Enter> maka terlihat dilayar : Tak ada Pemisah antara dua karakter, Inputkan Dua Buah Karakter: AB A B Selesai Diketik: AB<Enter> 112
C1 C2 AB A B ABC A B A B A A A A,B A , A A \n B \n B 112 Format scanf() Bila yang di input Yang tersimpan dalam variabel Tercetak dengan instuksi printf() diatas Keterangan C1 C2 Tak ada pemisah antara A dan B AB A B A B Selesai ABC A B A B Selesai Yang diambil hanya dua karakter Karakter-karakter selebihnyatidak diambil “%c%c” Ada jarak satu spasi antara A dan B C2 berisi blank (spasi) A B A A Selesai Tak ada jarak A A A Selesai C2 berisi blank A,B C2 berisi , (koma) A , A , Selesai A Selesai C2 berisi ‘\n’ (line feed), kalau dicetak efeknya turun satu baris A A \n B C1 berisi ‘\n’ (line feed) kalau dicetak efeknya turun satu baris B Selesai \n B 112
Inputkan Sebuah Karakter : A,B A Bselesai c. Menginput dua buah karakter, dengan 2 format disisipkan koma #include<stdio.h> void main() { char C1, C2; printf(“Inputkan Dua Buah Karakter : “ ); scanf(“%c,%c”, &C1,&C2); printf(“%c %c”, C1, C2); printf(“selesai”); } Mempunyai efek yang sama (baik cara menginput data maupun hasilnya) bila instruksi input [ scanf() ] ditulis menjadi dua baris instruksi sebagai berikut : scanf(“%c”, &C1); scanf(“,%c”, &C2); Apabila yang diINPUT adalah A,B<Enter> maka terlihat dilayar : , (koma) sebagai pemisah Inputkan Sebuah Karakter : A,B A Bselesai Diketik: A,B<Enter> 113
113 “%c %c” Satu spasi sebagai pemisah Yang tersimpan dalam variabel Tercetak dengan instuksi printf() diatas Format scanf() Bila yang di input C1 C2 Keterangan A Bselesai Satu spasi sebagai pemisah A dan B A B A B “%c %c” Yang diambil hanya dua karakter Karakter-karakter selebihnya tidak diambil A Bselesai A B A B C Satu spasi sebagai pemisah Antara A dan B tak ada pemisah efeknya sama denga A B A Bselesai AB A B Karakter ketiga dan seterusnya tidak diambil A,B A A ,selesai ‘ Bselesai C1 berisi ‘\n’ B \0 B A B A B A Bselesai Bselesai Sebelum B ada satu spasi C1 berisi ‘\n’ (line feed) B \n B 113
scanf(“%s”, Var); S[] #include<stdio.h> void main() 2). Menginput String dengan scanf() 7. 25 scanf(“%s”, Var); Variabel harus dipesan sebagai array character Misal : char S[10]; Tidak pakai tanda & Format pakai : s bukan : c #include<stdio.h> void main() { char S[10]; scanf(“%s”, S); - } Ketik sebuah kalimat (String) diakhiri dengan menekan <Enter> 0 1 2 3 4 5 6 7 8 9 S[] A B C D E F G \0 114
S[] A B C D E F G \0 114 0 1 2 3 4 5 6 7 8 9 Bila S[7] ditest dengan : 0 1 2 3 4 5 6 7 8 9 S[] A B C D E F G \0 Bila S[7] ditest dengan : if(S[7] == ‘\0’) atau dengan : if(S[7] == 0 ) atau dengan : if(S[7] == NULL ) Akan menghasilkan nilai : TRUE 114
S[] A B C D E F G \0 Akan tercetak : ABCDEFG 114 0 1 2 3 4 5 6 7 8 9 7. 27 0 1 2 3 4 5 6 7 8 9 S[] A B C D E F G \0 Isi variabel S[10] diatas, dapat dicetak dengan : printf(“%s”, S); atau dengan puts(S); Atau dengan : int I=0; while (S[I] != ‘\0’ ) { printf( “%c“,S[I]); I++; } Akan tercetak : ABCDEFG 114
A B C Bila yang diketik : ABC DEFG maka isi S[ ] menjadi : \0 7. 28 Bila yang diketik : ABC DEFG maka isi S[ ] menjadi : 0 1 2 3 4 5 6 7 8 9 A B C \0 Bila ada spasi diantara ABC dan DEFG, maka hanya ABC yang disimpan 114
115 3). Menginput Nilai Integer dengan scanf() a1. Menginput sebuah nilai integer dengan format %i atau %d #include<stdio.h> void main() { int N; printf(“Inputkan Sebuah Nilai : “ ); scanf(“%i”, &N); printf(“%i”, N); } Penulisan format seperti ini mempunyai efek yang sama “%i”, atau “ %i”, atau “ %i” Didepan format %i boleh ada spasi atau blank sebelum %i Pada instruksi scanf() format %i dapat diganti dengan %d Apabila yang diinput adalah 25 maka terlihat dilayar : Blank didepan atau dibelakang 25 tidak mempengaruhi, jadi 25 b25 25b b25b akan menghasilkan hasil yang sama. b = satu atau lebih blank (spasi) Inputkan Sebuah Nilai: 25 25 115
Perhatikan : int N; Variabel yang disiapkan untuk menampung input adalah bertipe int. Karena bertipe int maka lebarnya adlah 2 byte (16 bit). Berapapun besarnya nilai yang diinput, tidak menyebabkan error. Nilai yang dapat ditampung oleh variabel N adalah sebanyak 16 bit. Sehingga minimum dan maksimum isi variabel N dapat digambarkan sebagai berikut : minimum : 0000 0000 0000 0000 maksimum : 1111 1111 1111 1111 Apa yang tercetak bila nilai (bit-bit) yang tersimpan dalam 16 bit diatas dicetak, tergantung format yang digunakan untuk mencetak. Tapi bila nilai diatas dilakukan operasi aritmetik, maka nilainya adalah bit-bit yang ada. 115
(integer atau decimal) Hubungan antara tipe data input, format input dan format output untuk data numerik integer seperti yang dicontohkan oleh instruksi input dan output berikut ini : int N; scanf(“%i”, &N); printf(“%i”, N); Type data Format scanf() printf() Batas nilai input yang sesuai dengan hasil cetakan Keterangan int atau signed int unsigned int short int %i atau %d (integer atau decimal) atau %u (unsigned integer) %i atau %d %u %c %li atau ld %lu %f -32768 -- 32767 0 -- 65535 sesuai karakter ASCII untuk 8 bit paling kanan - Dicetak sebagai Signed integer Dicetak dengan Unsigned Integer Bila diinput 65 akan tercetak: A bila diinput 97 akan tercetak: a Tidak error, tapi hasilnya tidak benar karena data 2 Byte, yang dicetak 4 Byte Error %li %x (Hexadecimal) Batas nilai data sesuai dengan format input %o (Octal) Untuk signed integer : input 32767 tercetak : 77777 input -32768 tercetak : 100000 Untuk unsigned integer : input 65535 tercetak : 177777 input 32767 tercetak : 7ffff input -32768 tercetak : 1000 input 65535 tercetak : fffff 116
a2. Menginput dua buah nilai integer dengan format #include<stdio.h> void main() { int N1, N2; scanf(“%i %i”, &N1, &N2); - } intsruksi : scanf(“%i %i”, &N1, &N2); pada program diatas dapat ditulis menjadi dua instruksi sebagai berikut : scanf(“%i”, &N1); scanf(“%i”, &N2); 117
<5> <Enter> <2><Enter> Ketik: intsruksi : scanf(“%i %i”, &N1, &N2); pada program diatas dapat ditulis menjadi dua instruksi sebagai berikut : scanf(“%i”, &N1); scanf(“%i”, &N2); Cara menginputnya dapat dilakukan dengan dua cara sebagai berikut : 1. 2. 5 2 5 2 Ketik: <5> <Enter> <2><Enter> Ketik: <5> <spasi> <2> <Enter> Kedua cara diatas, sama-sama menyimpan 5 di N1, dan 2 di N2 5 2 117 N1 N2
5 2 5 2 1. 2. intsruksi : scanf(“%i %i”, &N1, &N2); atau : scanf(“%i”, &N1); scanf(“%i”, &N2); Cara menginput : 1. 2. 5 2 5 2 Ketik: <5> <Enter> <2><Enter> Ketik: <5> <spasi> <2> <Enter> 117
b. Menginput dengan format %li untuk long integer. long int N; scanf(“%li”, &N); printf(“%li”, N); Tipe long int panjangnya 4 Byte (32 bit). Berapapun nilai yang diinput tidak menyebabkan error tapi tempat penampungannya adalah 4 Byte (32 bit) Hubungan antara Tipe Data Format Input, dan Format Output untuk program seperti yang dicontohkan diatas. 118
118 long int signed unsigned %li 0 - 4294967295 Type data Format scanf() printf() Batas nilai input yang sesuai dengan hasil cetakan Keterangan long int atau signed unsigned %i atau %d atau %u %i atau %d %u %c %li atau ld %lu %f -32768 -- 32767 0 -- 65535 sesuai karakter ASCII untuk 8 bit paling kanan - Yang dicetak isi 2 byte paling kanan Dicetak sebagai Signed integer Yang dicetak isi dua byta paling kanan Dicetak dengan Unsigned Integer Yang dicetak isi 1 byte paling kanan Bila diinput 65 akan tercetak: A bila diinput 97 akan tercetak: a Tidak error, tapi hasilnya tidak benar karena data 2 Byte, yang dicetak 4 Byte Error %li minimal dan maksimal nilai signed long integer -2147483648 2147483647 %li atau %ld 0 - 4294967295 Unsigned long integer, minimum = 0 maksimum = 4294967295 118
float N; scanf(“%f”, &N); printf(“%f”, N); 4). Menginput Nilai Numerik Floating Point dengan scanf() a. Menginput dengan format %f untuk Single Precision Floating Point (float) float N; scanf(“%f”, &N); printf(“%f”, N); Tipe float panjangnya 4 Byte (32 bit). Nilai yang diinput harus dapat diterima sebagai Floataing Point yaitu nilai numerik yang mengandung titik desimal. 119
Hubungan antara Tipe Data Format Input, dan Format Output untuk program seperti yang dicontohkan diatas. Batas nilai input yang sesuai dengan hasil cetakan Keterangan Type data Format scanf() Format printf() Bila diinput Maka tercetak 3.4E-38 -- 3.4E38 positip atau negatip %f %lf 25 25.0 25.000000 %f %le 25 25.0 2.500000e+01 float %lg 25 25.0 25 %i %x 25 25.0 0 (Format tidak sesuai) %f %i 25 25.0 Format tak sesuai %i %lf Error format tak sesuai 119
double N; scanf(“%f”, &N); printf(“%lf”, N); b. Menginput dengan format %f untuk Double Precision Floating Point (double) double N; scanf(“%f”, &N); printf(“%lf”, N); Tipe double panjangnya 8 Byte (64 bit). Nilai yang diinput harus dapat diterima sebagai Floataing Point yaitu nilai numerik yang mengandung titik desimal. 120
Hubungan antara Tipe Data Format Input, dan Format Output untuk program seperti yang dicontohkan diatas. Batas nilai input yang sesuai dengan hasil cetakan Keterangan Type data Format scanf() Format printf() Bila diinput Maka tercetak %f %lf 25 25.0 25.000000 %f %le 25 25.0 2.500000e+01 double %lg 25 25.0 25 %i %x 25 25.0 0 (Format tidak sesuai) %f %i 25 25.0 Format tak sesuai %i %lf Error format tak sesuai 120
#include<iostream.h> void main() { int N; cin >> N; } 7.2. Menginput Data Melalui Keyboard Pada Program C++ Berbeda dengan pada program C, pada C++ menginput data tidak menggunakan format. Tipe data yang diinput tergantung langsung dengan tipe data penerimanya. Bila tipe data atau variabel penerima misalnya bertipe int, maka data yang diinput, apapun bentuk dan besarnya akan diterima oleh variabel tersebut sebagai tipe int. Instruksi input melalui keyboard pada C++, hanya ada satu macam yaitu : cin >> var. dimana var adalah nama sebuah variabel Pada program C++, cin (baca C in) ini disebut objek yang digunakan untuk menerima data dari standard input dalam hal ini satndard input adalah keyboard. Contoh. #include<iostream.h> void main() { int N; cin >> N; } 121
_ 121 Contoh. #include<iostream.h> void main() { int N; cin >> N; } Sewaktu melaksanakan instruksi cin >> N; , maka dilayar muncuk kursor sebagai berikut : _ Ditempat kursor berada inilah kita mengetik nilai yang akan diterima oleh variabel N. Misal kita ketik 25 <Enter>, maka yang terlihat dilayar adalah : 25 _ Perhatikan : Setelah mengetik <Enter> maka kursor turun ke baris berikutnya. Bila berikutnya ada instruksi ceta, maka akan tercetak ditempat kursor ini berada. 121
#include<ipstream.h> void main() { char C; cin >> C; 7.2.1. Menginput Sebuah karakter Melalui Keyboard Pada Program C++ 1). Menggunakan cin >> var; Bila diinput Maka tercetak #include<ipstream.h> void main() { char C; cin >> C; cout << C; } A 65 ABC ‘A’ “A” A 6 ‘ “ Bila yang diketik A<Enter> maka terlihat dilayar : Hanya karakter pertama yang disimpan dalam variabel C A A Catatan : Tanda sebenarnya tidak ada dilayar. Tanda itu hanya untuk menyatakan bahwa disana ditekan <Enter> 122
A 2). Menggunakan var = getch(); #include<ipstream.h> Untuk instruksi var = getch() diperlukan #include<conio.h> Hanya menginput satu karakter tanpa menekan <Enter> Yang diketik tidak terlihat dilayar. Huruf A yang terlihat dilayar adalah hasil instruksi cetak dengan cout << C; bukan huruf A yang diketik. Apa yang diketik tidak terlihat dilayar. Yang dapat diketik hanya satu karakter. Berusaha mengetik lebih dari satu karakter adalah tidak mungkin. Berbeda dengan cin << C, seperti pada program pertama. #include<ipstream.h> #include<conio.h> void main() { char C; C = getch(); cout << C; } Bila yang diketik A maka terlihat dilayar : A 122
AA 123 3). Menggunakan var = getche(); Untuk instruksi var = getche() diperlukan #include<conio.h> Hanya menginput satu karakter tanpa menekan <Enter> Yang diketik terlihat dilayar. Ada dua huruf A yang muncul dilayar. Yang pertama hasil ketikan, dengan C = getche(); dan yang kedua hasil pencetakan dengan cout >> A.. Yang diketik hanya satu karakter. Berusaha mengetik lebih dari satu karakter adalah tidak mungkin. Berbeda dengan cin << C, seperti pada program pertama. #include<ipstream.h> #include<conio.h> void main() { char C; C = getch(); cout << C; } Bila yang diketik A maka terlihat dilayar : AA Dicetak pada baris yang sama karena setelah mengetik A, kursor tidak pindah baris, karena tidak menekan <Enter> 123
7.2.2. Menginput String Melalui Keyboard Pada Program C++ 1). Menggunakan cin >> var; Bila diinput Maka tercetak #include<ipstream.h> void main() { char S[7]; cin >> S; cout << S; } ABCDE ABCDEF ABCDEFG ABC DE 65 “ABC” ‘ABC’ ABCDE ABCDEF error ABC 65 “ABC” ‘ABC’ 0 1 2 3 4 5 6 S Hanya bagian ini yang bisa diisi. 0 1 2 3 4 5 6 S A B C D E \0 Yang sangat khusus disini adalah bila dalam string tersebut mengandung spasi sepert : ABC DE maka hanya ABC yang diterma oleh array S. Yang tersimpan bila diketik : ABCDE<Enter> 123
2). Menggunakan cin.getline(var, sizeof(var)); Bila diinput Maka tercetak #include<ipstream.h> void main() { char S[7]; cin.getline(S,7); cout << S; } ABCDE ABCDEF ABCDEFG ABC DE 65 “ABC” ‘ABC’ ABCDE ABCDEF error ABC DE 65 “ABC” ‘ABC’ 0 1 2 3 4 5 6 S 0 1 2 3 4 5 6 Hanya bagian ini yang bisa diisi. S A B C D E \0 Agar tidak salah menulis, maka sebaiknya instruksi: cin.getline(S,7); diganti saja menjadi : cin.getline(S, (sizeof(S)); Yang tersimpan bila diketik : ABCDE<Enter> 124
7.2.3. Menginput Sebuah Nilai Numerik Melalui Keyboard Pada Program C++ 1). Menginput Nilai Numerik Integer dengan cin >> var; Bila diinput Maka tercetak tipe int #include<ipstream.h> void main() { int N; cin >> N; cout << N; } 25 25.75 32767 32768 65535 65536 -25 -32769 -65535 025 0x25 25 32767 -32768 -1 -25 1 21 37 Nilai yang diketik besarnya tidak dibatasi. Apapun atau berapapun besarnya nilai yang diketik akan dinyatakan dalam bentu bilangan biner atau binary digit. Karena N tipenya int , maka hanya 16 bit paling kananyang diambil dan disimpan kedalam N. 124
Contoh nilai yang diketik dan nilai yang dismpan dalam variabel N diinput Nilai yang diinput dalam bentu binary Binary yang akan disimpan dalam N Nilai sebagai tipe int 25 32767 32768 65535 65536 -25 025 0x25 1 1001 0111 1111 1111 1111 1000 0000 0000 0000 1111 1111 1111 1111 1 0000 0000 0000 0000 1111 1111 1110 0111 1 0101 10 0101 0000 0000 0001 1001 0111 1111 1111 1111 1000 0000 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1110 0111 25 32767 -32768 -1 -25 21 37 025 maksudnya nilai octal 25 yang nilai decimalnya = 21 = (2*8 + 5*1) 0x25 maksudnya nilai Hexadecimal 25 yang nilai decimalnya = 37= (2*16 + 5*1) 125
2). Menginput Nilai Numerik Lain Dengan cin >> var; Telah dicontohkan diatas, menginput data dengan cin, untuk variabel bertipe int (integer 2 Byte) Untuk data tipe long int, float dan double, digunakan instruksi yang sama yaitu cin >> var. Perbedaannya hanya pada tipe dan jangkauan nilai yang tersimpan dalam variabel tersebut. tipe long int tipe float #include<ipstream.h> void main() { signed long int N; cin >> N; cout << N; } #include<ipstream.h> void main() { float F; cin >> F; cout << F; } Jangkauan nilai dan format cetakan, dapat dilihat pada Bab 5 dan Bab 6. 125
7.3. Menginput Data Melalui Keyboard Pada Program Java 7.3.1. Menginput Sebuah Karakter Melalui Keyboard Pada Program Java Berbeda dengan Bahasa C++ apalagi bahasa C yang mempunyai banyak macam instruksi input data dari keyboard, Java hanya menyiapkan sebuah instruksi dasar yaitu : var = System.in.read(); dimana var = variabel bertipe int 126
Hanya saja penggunaan instruksi System. in Hanya saja penggunaan instruksi System.in.read(), memerlukan instruksi : try dan catch. Perhatikan contoh menginput sebuah karakter dari keyboard berikut ini : public class Contoh01 { public static void main (String[] args ) { int N = 0; try { N = System.in.read(); } catch(java.io.IOException e) { System.out.println(“Ada Salah”); System.out.println(N); Apabila program diatas dijalankan, dan diinputkan : A<Enter> maka terlihat dilayar sebagai berikut. A 65 Huruf A adalah karakter yang diketik melalui keyboard, dan 65 adalah hasil cetakan System.out.println(N), karena variabel N bertipe int. 126
65 54 127 Bila diinput ABC<Enter>, maka terlihat dilayar sebagai berikut : ABC 65 Yang diambil hanya satu karakter pertama yaitu karakter A yang nilai integernya = 65 Bila diinput 65<Enter>, maka terlihat dilayar sebagai berikut : 65 54 Yang diambil hanya satu karakter pertama yaitu karakter ‘ 6’ yang nilai integernya = 54 127
try { N = System.in.read(); } Perhatikan kembali program menginput sebuah karakter sebagai berikut : public class Contoh01 { public static void main (String[] args ) { int N = 0; try { N = System.in.read(); } catch(java.io.IOException e) { System.out.println(“Ada Salah”); System.out.println(N); try { N = System.in.read(); } maksudnya berusaha membaca sebuah karakter dari keyboard. Membaca data dari sistem input, kemungkinan terjadi error (exception). Apabila terjadi error, maka kondisi error tersebut perlu ditangkap dengan catch.. A pabila catch menagkap kondisi error, maka cetak perkataan “Ada Salah” 127
7.3.2. Menginput String Karakter Melalui Keyboard Pada Program Java Sayangnya, tidak seperti bahasa lain misalnya C atau C++, Java tidak menyiapkan instruksi menginput string.Yang ada hanya menginput sebuah karakter. Terpaksa kita harus bersusah payah menginput karakter demi karakter dan menggabungnya menjadi sebuah string. Salah satu usaha dapat dicontohkan sebagai berikut : Contoh: public class Contoh02 { public static void main (String[] args ) { int N = 0; String S =“”; boolen selesai = false; while(!selesai) { N = System.in.read(); if( N < 0 || (char) N == ‘\n’) selesai = true; else if ( (char) N != ‘\r’ ) S = S + (char) N; } System.out.println(S); 128
ABC ABC _ 128 Apabila diinputkan : ABC<Enter>, maka terlihat dilayar sebagai berikut. ABC ABC _ Instruksi diatas juga dapat digunakan untuk menginput satu buah karakter dengan diakhiri <Enter>, misal apabila hanya diketik A<Enter> maka akan terlihat dilayar : A A _ Bagi Anda yang belum memahami instruksi while dan instruksi lainnya, pada tahap ini Anda cukup mengikuti saja dulu instruksi diatas. 128
String S = InputDariKeyboard.inputString(); Catatan Penting ! Buku literatur mengajarkan untuk menyederhanakan program utama kita. Untuk menginput string dari keyboard kita cukup menulis sebuah instruksi misal sebagai berikut : String S = InputDariKeyboard.inputString(); yang penggunaannya dicontohkan sebagai berikut : public class Contoh01 { public static void main (String[] args ) { String S; S = InputDariKeyboard.inputString(); System.out.println(S); } 129
Bila program diatas dijalankan, mula mula muncul kursor di layar sebagai tanda komputer sedang melaksanakan instruksi input dan minta data untuk diinput. _ Apabila diinputkan : ABC<Enter>, maka terlihat dilayar sebagai berikut. ABC ABC _ Catatan : Tanda sebenarnya tidakadadilayar. Tanda itu hanya untuk menyatakan bahwa disana ditekan <Enter> Dua instruksi : String S; S = InputDariKeyboard.inputString(); dapat ditulis menjadi : String S = InputDariKeyboard.inputString(); 129
130 Nampak bahwa instruksi String S = InputDariKeyboard.inputString(); tidaklah terlalu rumit. Tetapi, ada konsekuensi yang memberatkan kita yaitu, agar instruksi tersebut dapat dikenal dan dapat dilaksanakan, kita harus menulis sebuah program (class ) tersendiri, dikompilasi tersendiri dan file class hasil kompilasi tersebut harus disimpan dengan nama InputDariKeyboard.class dalam direktori yang sama dengan direktori program utama yang kita buat Program tersebut harus ditulis sebagai berikut : public class InputDariKeyboard { public static String inputString() { int Nilai = 0; String S = “”; boolean selesai = false; while (!selesai) { try { Nilai = System.in.read(); if(Nilai < 0 || (char) Nilai == ‘\n’) selesai = true else if ((char) Nilai != ‘\r’) S = S + (char) Nilai; } catch(java.io.IOException e) { System.err.println(“Ada salah input”); selesai = true; return S; 130
130 Perhatikan : Dua kata InputDariKeyboard, dan inputString() Dua kata ini yang ditiru persis dalam program utama yang kita buat. Dua kata ini boleh diganti, tapi kata yang ada dalam program utama juga harus diganti meniru kata tersebut. Program diatas memang rumit, tapi tidak perlu dipahami sekarang. Sekarang yang diperlukan adalah , ketik, kompilasi dan simpan program tersebut agar instruksi input String var = InputDariKeyboard.inputString() yang kita tulis dalam program utama kita dapat digunakan. Setelah Anda memahami bahasa Java, maka Anda akan dapat merubah program diatas dengan maksud yang sama. 130
131 7.3.3. Menginput Nilai Numerik Melalui Keyboard Pada Program Java Kembali disayangkan Java tidak menyiapkan instruksi yang dapat dipakai untuk langsung menerima data yang dinput secara nilai numerik. Instruksi yang ada disiapkan sebenarnya hanyalah mengetik sebuah karakter yang telah kita kembangkan sendiri menjadi mengetik sebuah string sebagai berikut : String S = InputDariKeyboard.inputString(); Data yang kita input masuk kedalam variabel S yang bertipe string. Maksudnya data dalam bentuk untaian karakter karaktar. Bila yang diinput : 12 maka data yang diinput adalah dua buah karakter, yaitu karakter 1 dan karakter 2, bukan nilai 12 (dua belas). Agar dua karakter tersebut dapat dianggap sebagai nilai dua belas dan disimpan dalam variabel tipe int (integer), maka karakter-karakter tersebut harus dikonversi kedalam bentuk int. Perhatikan contoh berikut ini. 131
{ public static void main (String[] args ) { String S; public class Contoh01. { public static void main (String[] args ) { String S; S = InputDariKeyboard.inputString(); int N = Integer.valueOf(S).intValue(); System.out.println(N); } Perhatikan intruksi untuk mengonversi nilai string S kedalam variabel integer N sebagai berikut : int N = Integer.valueOf(S).intValue(); Untuk konversi ke float ataudouble dapat dibuat : float F = Float.valueOf(S).floatValue(); double D = Double.valueOf(S).doubleValue(); 131
132 7.3.4. Menginput Data dari keyboard dengan Kotak Dialog Pada Program Java Dengan kemampuan membangun aplikasi GUI (Graphic User Interface) Java dapat menampilkan window kecil dengan sebuah text yang pada pemrograman visual biasa disebut kotak dialog. Instruksi yang digunakan : String varS = JOptionPane.showInputDialog (“Kalimat Judul “); Fungsi JOptionPane merupakan salah satu bagian dari package javac.swing, maka perlu ditambahkan instruksi import javac.swing.* JOption.Pane ini mengambil input berupa string yang diketik melalui keyboard, yang disimpan dalam variabel varS . . Bila data yang diketik ingin diperlakukan sebagai nilai numerik misal kedalam tipe int, maka harus dikonversi menjadi nilai numerik int dengan instruksi : int varInt = Integer.parseInt(varS); Perhatikan contoh program berikut ini : 132
? x 75 adalah nilai yang diketik 132 import java.swing.*; public class Contoh. { public static void main (String[] args ) { String S = JOption.Pane.showInputDialog(“Nilai : “); int N = Integer.parseInt( S ); System.out.println(N); } dilayar akan muncul kotak dialog sebagai berikut : x Input Nilai : ? 75 OK Cansel 75 adalah nilai yang diketik 132
{ public static void main (String[] args ) Dalam kotak dialog dapat dimunculkan banyak kalimat sebagai petunjuk menginput data . Perhatikan contoh berikut : import java.swing.*; public class Contoh { public static void main (String[] args ) { String S = JOption.Pane.showInputDialog(“Menu :”+ “\n1. Entry Nilai”+ “\n2. Update Nilai”+ “\n3. Sort Nilai”+ “\n4. Cetak Nilai “ ); int N = Integer.parseInt( S ); - }
? x dilayar akan muncul kotak dialog sebagai berikut : Input Menu : 1. Entry Nilai 2. Update Nilai 3. Sort Nilai 4. Cetak Nilai ? 1 OK Cansel 1 adalah data yang diketik Instruksi JOptionPane diatas, dapat juga ditulis sebagai berikut: String S = JOptionPaneshowInputDialog(“Menu : \n1. Entry Nilai \n2. Update Nilai \n3. Sort Nilai \4. Cetak Nilai “ ) ;
7.3.5. Menginput String dari Keyboard dengan readLine( ) pada Program Java Pada program Java, ada cara yang lebih mudah untuk menginput sebuah kalimat atau string melalui keyboard dengan menggunakan metode readLine(). Perhatikan contoh berikut ini : import java.io.*; public class Contoh { public static void main (String[] args ) { BufferedReader sebarisTeks = new BufferedReader ( new InputStreamReader(System.in) ); System.out.println( “Input Nama Kota : “); String S = “”; try { S = sebarisTeks.readLine(); } catch (IOException i) { System.out.println(“Nama Kota Anda : “ + S);
Nama Kota Anda : Jakarta Raya Bila program diatas dijalankan, dan diinput : Jakarta Raya <Enter> maka terlihat dilayar sebagai berikut : Input Nama Kota : Jakarta Raya Nama Kota Anda : Jakarta Raya