Dokumen tersebut membahas tentang pengenalan array (larik) dan beberapa contoh penerapannya dalam bahasa pemrograman C++, BASIC, dan JavaScript. Terdapat penjelasan tentang apa itu array, contoh array string, dan beberapa kasus manipulasi string dan waktu menggunakan konsep array.
1. Pangalengge Educations
---------------------------------------
IV. Pengenalan Array (Larik)
Yang dimaksud dengan array (larik), adalah sejumlah data yang bertipe sama dalam
satu kelompok dengan posisi yang berurutan.
Misalkan: string Rina adalah sekelompok data S dengan jenis karakter yang diposisikan
secara berurutan dengan masing-masing elemen:
S[0] = R
S[1] = i
S[2] = n
S[3] = a
Bila mengulas perihal array, Bahasa Pemrograman C++ sangat cocok digunakan dalam
menjelaskan dan mengimplementasikan berbagai teori serta filosofi ini.
Meskipun demikian bukan berarti Bahasa Pemrograman BASIC dan JavaScript tidak
bisa digunakan dalam mengulas tentang array, hanya tidak lebih luwes bila
dibandingkan dengan Bahasa Pemrograman C++.
Contoh. Kasus 3.1 berikut ini:
Sebuah string dengan nilai: pengerjaan akan dilakukan proses perubahan sebagai
berikut:
S[10] = {p,e,n,g,e,r,j,a,a,n}
S[0]=p
S[1]=e
S[2]=n
S[3]=g
S[4]=e
S[5]=r
S[6]=j
S[7]=a
S[8]=a
S[9]=n
Algoritma perubahan:
S[9] ← S[0] S[0] ← S[9]
;
S[8] ← S[1] S[1] ← S[8]
;
S[7] ← S[2] S[2] ← S[7]
;
S[6] ← S[3] S[3] ← S[6]
;
S[5] ← S[4] S[4] ← S[5]
;
Sehingga didapatkan nanti hasilnya:
S[10] = { n, a, a, j, r, e, g, n, e, p }
kas31.cpp
#include <iostream.h>
void main()
{
int i;
IV-1
3. Pangalengge Educations
---------------------------------------
}
Berikut untuk mengantisipasi bila user memasukkan string melebihi 10 karakter atau
sama sekali kosong.
kas32a.cpp
#include <iostream.h>
#include <string.h>
void main()
{
int i,pjg;
char smn,s[10];
cout << quot;Masukkan string (maks.10 char): quot;;
cin >> s;
pjg=strlen(s);
if(s==quot;quot;||pjg>10) {
cout << quot;Maaf, melebihi 10 karakterquot;;
} else {
for(i=0;i<5;i++) {
smn=s[i];
s[i]=s[9-i];
s[9-i]=smn;
}
cout << quot;Hasil perubahan: quot;;
for(i=0;i<10;i++) {
cout << s[i];
}
}
}
Semakin jelas ditunjukkan bahwa sebuah string adalah padanan dari kata, bukan
sebuah kalimat.
Berikut dalam JavaScript sebuah prosedur yang digunakan untuk menangkap
sejumlah karakter yang di-input-kan oleh user. Namun ada sebuah prosedur tambahan
yang disisipkan untuk membatasi bahwa user hanya bisa mengetikkan dengan
maksimal 10 karakter saja. Jelas nanti akan terlihat perbedaan penulisan array untuk
‘[‘ , ‘]’ dan ‘(‘, ‘)’.
kas32cc.html
<script language=JavaScript>
sa=window.prompt(quot;Masukkan string (maks.10 karakter):quot;,quot;0quot;);
pjg=sa.length;
if(pjg<=0||pjg>10) {
document.writeln(quot;Maaf, kosong atau melebihi 10 karakterquot;);
} else {
document.writeln(quot;Hasil perubahan: quot;);
for(i=0;i<sa.length;i++) {
document.writeln(sa.charAt(i));
}
}
IV-3
4. Pangalengge Educations
---------------------------------------
</script>
kas32.html
<script language=JavaScript>
sa=window.prompt(quot;Masukkan string (maks.10 karakter):quot;,quot;0quot;);
pjg=sa.length;
if(pjg<=0||pjg>10) {
document.writeln(quot;Maaf, kosong atau melebihi 10 karakterquot;);
} else {
document.writeln(quot;Hasil perubahan: quot;);
for(i=0;i<sa.length;i++) {
document.writeln(sa.charAt(i));
}
}
</script>
kas33.html
<script language=JavaScript>
sa=window.prompt(quot;Masukkan string (maks.10 karakter):quot;,quot;0quot;);
pjg=sa.length;
if(pjg<=0||pjg>10) {
document.writeln(quot;Maaf, kosong atau melebihi 10 karakterquot;);
} else {
document.writeln(quot;Hasil perubahan: quot;);
for(i=0;i<sa.length;i++) {
document.writeln(sa.charAt(i));
}
}
</script>
Berikut adalah Algoritma Marbulang+7 untuk melakukan proses enkripsi dari
sebuah plaintext dengan panjang maksimal 10 karakter yang di-input-kan oleh user:
[char]-1, [char]-2, [char]-3,…, [char]-26
[char]-1 = A atau a,
[char]-2 = B atau b, … , [char]-26 = Z atau z
string[i]…?…[char]-1 s.d [char]-26
string[i]←([char]-j) + 7
jika string[i] melebihi [char]-26 maka
lakukan reset ke [char]-1
i = 0,1,2…9
j = 1,2,3,…,26
IV-4
5. Pangalengge Educations
---------------------------------------
kas34.html
<script language=JavaScript>
var coding =
'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMabcdefghijklmnopqrstuvwxyzab
cdefghijklm';
var sa=window.prompt(quot;Masukkan string (maks.10 karakter):quot;,quot;0quot;);
pjg=sa.length;
if(pjg<=0||pjg>10) {
document.writeln(quot;Maaf, kosong atau melebihi 10 karakterquot;);
} else {
for (var text = '',i=0;i<pjg;i++) {
character = sa.charAt(i);
position = coding.indexOf(character);
if (position > -1)
character = coding.charAt(position + 7);
text += character;
}
document.writeln(quot;Hasil enkripsi menggunakan Algoritma Marbulang+7: <b>quot; +
text+quot;</b>quot;);
}
</script>
Kasus berikut menyajikan daftar karakter alphabetikal untuk huruf kecil dan besar.
kas35.cpp
#include <iostream.h>
void main()
{
cout << quot;Tabel Alphabetikal A s.d Znquot;;
cout << quot;==========================nquot;;
cout << quot;No. Abjad Huruf Besar Abjad Huruf Kecilnquot;;
for(int i=0;i<26;i++) {
cout.width(2);
cout << i+1 << quot; quot; << char(i+65) << quot; quot; << char(i+97) << endl;
}
}
kas35.bas
CLS
PRINT quot;Tabel Alphabetikal A s.d Zquot;
FOR i = 1 TO 26
PRINT i; quot; quot;; CHR$(i + 64); quot; quot;; CHR$(i + 96)
NEXT i
Untuk lebih interaktif, dapat ditulis kembali sebagai berikut:
kas35a.bas
CLS
PRINT quot;Tabel Alphabetikal A s.d Zquot;
INPUT quot;Masukkan batas atas: quot;; a
INPUT quot;Masukkan batas bawah: quot;; b
FOR i = a TO b
PRINT i; quot; quot;; CHR$(i + 64); quot; quot;; CHR$(i + 96)
NEXT i
IV-5
6. Pangalengge Educations
---------------------------------------
kas35.html
<script language=JavaScript>
alert(quot;Alphabetikal A s.d Zquot;);
document.writeln(quot;<table border=1><tr><td>No.</td><td>Abjad Huruf
Besar</td><td>Abjad Huruf Kecil</td></tr>quot;);
for(i=0;i<26;i++) {
document.writeln(quot;<tr><td align=right>quot;+[i+1]+quot;</td><td
align=center>quot;+String.fromCharCode(i+65)+quot;</td><td
align=center>quot;+String.fromCharCode(i+97)+quot;</td></tr>quot;);
}
document.writeln(quot;</table>quot;);
</script>
Kasus 3.6, menyajikan sebuah string dengan panjang 8 karakter dimanipulasi dengan
batasan, setiap karakter akan dipindahkan 2 posisi ke depan dari tempat semula.
Misalkan: string: selamat1, jika dimanipulasi dengan batasan tersebut akan
mendapatkan string baru: t1selama.
String asli disebut: plaintext, dan string hasil perubahan disebut: ciphertext,
sedangkan batasan yang ditetapkan untuk melakukan perubahan disebut: key.
kas36.cpp
#include <iostream.h>
void main()
{
int i;
char smk,smn,kara[8];
cout << quot;Masukkan kata maks.8 karakter: quot;;
cin >> kara;
cout << quot;Plaintext: quot; << kara << endl;
cout << quot;Ciphertext: quot;;
smn=kara[2];
kara[2]=kara[0];
kara[0]=kara[6];
smk=kara[4];
kara[4]=smn;
kara[6]=smk;
smn=kara[1];
kara[1]=kara[7];
smk=kara[3];
kara[3]=smn;
smn=kara[5];
kara[5]=smk;
kara[7]=smn;
for(i=0;i<8;i++) {
cout << kara[i];
}
}
IV-6
7. Pangalengge Educations
---------------------------------------
Kasus 3.7 berikut bertujuan mendapatkan selisih waktu dari input awal dan akhir dari
user. Namun hal yang harus dibatasi adalah kemungkinan menit akhir bernilai lebih
kecil dibandingkan dengan menit awal.
kas37.cpp
#include <iostream.h>
void main()
{
int jam2,jam1,menit2,menit1,resultJ,resultM;
cout << quot;Jam mulai: quot;;
cin >> jam1;
cout << quot;Menit mulai: quot;;
cin >> menit1;
cout << quot;Jam selesai quot;;
cin >> jam2;
cout << quot;Menit selesai: quot;;
cin >> menit2;
if(menit2<menit1) {
resultJ=jam2-jam1;
resultM=menit2-menit1+60;
} else {
resultJ=jam2-jam1;
resultM=menit2-menit1;
}
cout << quot;Lamanya waktu = quot; << resultJ << quot;.quot; << resultM << quot; jamquot;;
}
Array bisa diterapkan pada kasus 3.7 sebelumnya, misalkan kas37.cpp dapat
dilakukan perubahan sebagai berikut:
kas37a.cpp
#include <iostream.h>
void main()
{
int jam[2],menit[2],resultJ,resultM;
cout << quot;Jam mulai: quot;;
cin >> jam[0];
cout << quot;Menit mulai: quot;;
cin >> menit[0];
cout << quot;Jam selesai quot;;
cin >> jam[1];
cout << quot;Menit selesai: quot;;
cin >> menit[1];
if(menit[1]<menit[0]) {
resultJ=jam[1]-jam[0];
resultM=menit[1]-menit[0]+60;
} else {
resultJ=jam[1]-jam[0];
resultM=menit[1]-menit[0];
IV-7
9. Pangalengge Educations
---------------------------------------
</form>
</body>
</html>
Umumnya sebuah bahasa pemrograman mendukung array sekelompok bilangan pada
variabel yang diurutkan. Misalkan 20 bilangan dikelompokkan pada satu buah
himpunan, S, dengan masing-masing nilai sebagai berikut:
S[0] = -7 S[5] = -537 S[10] = 27 S[15] = 77
S[1] = -47 S[6] = 67 S[11] = 57 S[16] = 471
S[2] = 71 S[7] = 70 S[12] = 72 S[17] = -78
S[3] = 75 S[8] = -375 S[13] = 37 S[18] = -17
S[4] = 17 S[9] = 170 S[14] = 87 S[19] = 67
S[20] = {-7,-47,71,75,17,-537,67,70,-375,170,27,57,72,37,87,77,471,-78,-17,67}
Salah satu kelebihan array adalah, mampu menampilkan urutan ke-i yang diminta oleh
user. Hal ini bermanfaat bila array tidak dideklarasikan pada badan program, namun
langsung ditampung sementara pada ruang memory.
Misalkan 5 kali kesempatan user untuk memberi input nilai numerik. Lalu diminta input
di urutan ke-berapa, tidak boleh urutan pertama, yang akan ditambahkan dengan suatu
konstanta; lalu konstanta berapa yang akan diinginkan oleh user; lalu hasil penjumlahan
ini dikalikan dengan hasil pengurangan antara bilangan di urutan ke-5 dengan nilai di
urutan ke-k, dimana k adalah urutan ke-i yang ditentukan user tadi dikurangi 1.
User selalu memiliki keterbatasan dalam mengingat alphanumerik dibandingkan
alphabetikal.
kas38.cpp
#include <iostream.h>
void main()
{
int i,j,konst,urut=1;
float urutan[5],hasl,result,hsl;
for(i=0;i<5;i++) {
cout << quot;Bilangan ke-quot; << i+1 << quot;: quot;;
cin >> urutan[i];
}
cout << quot;Urutan keberapa? (!=1): quot;;
cin >> j;
cout << quot;Masukkan konstanta: quot;;
cin >> konst;
hsl=urutan[j-1]+konst;
hasl=urutan[4]-urutan[j-1-urut];
result=hsl*hasl;
cout << quot;Hasilnya = quot; << result;
}
Perhatikan, urutan array oleh compiler dimulai pada urut ke-0, sehingga jika misalkan 5
array ditetapkan sebagai berikut:
IV-9
10. Pangalengge Educations
---------------------------------------
urutan[5] = {4,-3,12,6,2}
diuraikan sebagai berikut:
urutan[0] = 4
urutan[1] = -3
urutan[2] = 12
urutan[3] = 6
urutan[4] = 2
dan user menginginkan urutan ke-2 ditampilkan, maka jika i adalah urutan array, i
harus di-increment-kan agar mendapatkan urutan ke-2.
Artinya, user mengurutkan array tersebut sebagai berikut:
urutan[1] = 4
urutan[2] = -3
urutan[3] = 12
urutan[4] = 6
urutan[5] = 2
Kembali ke kas38.cpp, misalkan user menginginkan urutan ke-2 dengan konstanta
bernilai 2, maka hasilnya = 2.
Mengapa setiap variabel hasil operasi ditetapkan dalam tipe data float, alasannya
agar bisa menampung hasil operasi arithmatika untuk perkalian dan pembagian bila
mendapatkan nilai pecahan (tidak bulat).
kas38a.cpp
#include <iostream.h>
void main()
{
int j,i,shar[5];
for(i=0;i<5;i++) {
cout << quot;Bilangan ke-quot; << i+1 << quot;: quot;;
cin >> shar[i];
}
cout << quot;Pilihan bilangan ke-berapa?: quot;;
cin >> j;
cout << quot;Anda memilih bilangan ke-quot; << j;
cout << quot; bernilai: quot; << shar[j-1];
}
kas38b.cpp
#include <iostream.h>
void main()
{
int j,i,shar[5];
float hasl;
for(i=0;i<5;i++) {
cout << quot;Bilangan ke-quot; << i+1 << quot;: quot;;
cin >> shar[i];
}
cout << quot;Pilihan bilangan ke-berapa?: quot;;
cin >> j;
cout << quot;Anda memilih bilangan ke-quot; << j;
cout << quot; bernilai: quot; << shar[j-1];
IV-10
11. Pangalengge Educations
---------------------------------------
hasl=shar[j-1]+2;
cout << quot;nJika bilangan yang Anda pilih ditambah dengan 2 = quot; << hasl;
}
kas38.bas
CLS
urut = 1
FOR i = 1 TO 5
PRINT quot;Masukkan nilai-quot;; i; quot;: quot;;
INPUT a(i)
NEXT i
INPUT quot;Pilih urutan ke berapa(!=1):quot;; j
INPUT quot;Tentukan konstanta:quot;; konst
hsl = a(j) + konst
hasl = a(5) - a(j - urut)
result = hsl * hasl
PRINT quot;Hasilnya = quot;; result
Terlihat pada kas38.bas, karena looping di-set mulai urutan ke-1, maka untuk statement hsl
dan hasl tidak dilakukan decrement 1; berbeda pada kas38.cpp dan kas38.html
Berikut sepintas program BASIC untuk mendapatkan 5 nilai array yang di-input-kan user, dan
ditampung sementara pada variabel a yang dilakukan secara looping 5 kali. Perhatikan, 5 nilai
numerik ini dikelompok dalam sebuah array, a[5].
kas38a.bas
CLS
FOR i = 1 TO 5
INPUT a(i)
PRINT quot;Nilai ke-quot;; i; quot; = quot;; a(i)
NEXT i
Perhatikan sintaks BASIC berikut ini:
kas38b1.bas
CLS
FOR i = 1 TO 5
INPUT quot;Masukkan nilai[quot;; i; quot;]: quot;;a (i)
NEXT i
FOR i = 1 TO 5
PRINT quot;Nilai ke-quot;; i; quot; = quot;; a(i)
NEXT i
Terjadi kesalahan saat proses interpretasi dilakukan, sehingga dilakukan editing yang
menghasilkan sebagai berikut
kas38b2.bas
CLS
FOR i = 1 TO 5
PRINT quot;Masukkan nilai[quot;; i; quot;]: quot;;
INPUT a(i)
NEXT i
FOR i = 1 TO 5
PRINT quot;Nilai ke-quot;; i; quot; = quot;; a(i)
NEXT i
IV-11
12. Pangalengge Educations
---------------------------------------
Bisa disimpulkan, sebuah bahasa pemrograman harus memiliki stream untuk
menampilkan sebuah statement, dan menerima sebuah value dari user.
kas38.html
<script language=JavaScript>
urutan=new Array();
for(i=0;i<5;i++) {
urutan[i]=window.prompt(quot;Ketikkan bilangan:quot;,quot;0quot;);
urutan[i]=parseInt(urutan[i]);
}
document.writeln(quot;Bilangan yang Anda ketikkan:<br>quot;);
for(i=0;i<5;i++) {
document.writeln(quot;Bilangan ke-quot;+[i+1]+quot;: quot;+urutan[i],quot;<br>quot;);
}
j=window.prompt(quot;Urutan keberapa?:quot;,quot;tidak boleh 1quot;);
kkonst=window.prompt(quot;Masukkan konstanta:quot;,quot;0quot;);
konst=parseInt(kkonst);
urut=1;
hsl = konst + urutan[j-1];
hasl=urutan[4]-urutan[j-1-urut];
result=hsl*hasl;
document.writeln(quot;Hasilnya = quot;, result);
</script>
Ringkasan
Array biasa digunakan untuk mendeklarasikan sejumlah data yang ber-tipe sama
untuk mewakilkan sekumpulan data yang dipanggil secara beruntun/berurutan.
Biasanya dalam deklarasi array dan menjalankannya dibantu logical-structure
for…i (perulangan for).
Untuk masing-masing Bahasa Pemrograman C++, BASIC, dan JavaScript
memiliki kekhasan dalam mendeklarasikan sebuah array.
IV-12