13
LAPORAN RESMI PRAKTIKUM 10 ADVANCED FEATURES OF AWK Oleh : Ahmad Reza Musthafa (7609040007) 2 – D4 TEKNIK KOMPUTER PROGRAM STUDI D4 TEKNIK KOMPUTER POLITEKNIK ELEKTRONIKA NEGERI SURABAYA - ITS

AWK Programming 10 - Ahmad Reza Musthafa

Embed Size (px)

Citation preview

Page 1: AWK Programming 10 - Ahmad Reza Musthafa

LAPORAN RESMI PRAKTIKUM 10

ADVANCED FEATURES OF AWK

Oleh :

Ahmad Reza Musthafa (7609040007)

2 – D4 TEKNIK KOMPUTER

PROGRAM STUDI D4 TEKNIK KOMPUTER

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA - ITS

Page 2: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 2

Implementation “AWK chapter 10” in program :

BEGIN{ lib = "Package import static private public int float char if else else if while do for ; == \\|\\| \\&\\& >= <= = \\+\\+ \\-\\- \\* \\/ \\+ \\- \\^ \\% < > \\( \\) \\{ \\} \\[ \\] \\\"[^\"]*\\\" '.' \\w+\\.\\w+ return [A-z_][A-z_0-9]* [-+]?\\d+\\.\\d+ [-+]?\\d+ ," z[0]="\033[0;31m--------------------------------------------------------------------------------------------------------------------\033[0m" print printf("\t\t\t\t\t\t \033[0;34m"".:. WELCOME .:.\n""\033[0m") print z[0] libregex() print z[0] print (".:\033[0;34m""File Name""\033[0m") print z[0] printf("> ") getline name print temp=0 for(c=0;c<=500;c++){ getline isi[c] < name tabel=tabel""isi[c]"\n""\t" if(isi[c]==null) temp=temp+1 if(temp==4)c=500 } koding=tabel printf("\t%s",koding) print gabungkoding() pengecekan() } function gabungkoding(){ print z[0] print (".:\033[0;34m""Merge File""\033[0m") print z[0] mergekoding() print } function libregex(){ print(".:\033[0;34m""Tabel Regex""\033[0m") print z[0] split(lib,reg," ") a=length(reg) for(i=1;i<=a/2;i++){ printf (" \033[0;34m[%.2d]\033[0m= \033[0;35m%7.10s\033[0m\t\t\t\t\t\033[0;34m[%.2d]\033[0m=

Page 3: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 3

\033[0;35m%s\033[0m\n",i,reg[i],i+a/2,reg[i+a/2])} } function mergekoding(){ gsub(/[ \n\t]+/," ",koding) print koding } function join(array,start,end,sep,result,i) { if (sep == "") sep = " " else if (sep == SUBSEP) sep = "" result = array[start] for (i = start + 1; i <= end; i++) result = result sep array[i] return result } function pengecekan(){ print z[0] print (".:\033[0;34m""Pemisahan""\033[0m") print z[0] pemisahan() pengelompokan() # coba="#include<stdio.h> void main(){printf(a); printf(a);}" dmn=match(koding,/[ ]*(import|import)[ ]*[a-zA-Z]*[\.][a-zA-Z\*][ ]*[\;][ ]*)*[ ]*(public|private)[ ](class[ ][ ]*[^ \,\-\+\@\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*[\{][ ]*)((----------)?((unsigned[ ])?int[ ][ ]*[^ \,\-\+\@\$\%\^\&\*\!0-9][a-zA-Z0-9]*[ ]*([\=][ ]*[0-9]*[ ]*)?[\;][ ]*)?(----------)?((unsigned[ ])?(float|double)[ ][ ]*[^ \,\-\+\@\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*?([0-9]*|([0-9]*[\.][0-9]*))[ ]*)?[\;][ ]*)?(----------)?(char[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*(\')[ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*(\')[ ]*)?[\;][ ]*?)?)*(----------)?(String[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*["][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*["][ ]*)?[\;][ ]*)?(---hehe-)?(((public|private)[ ]*(String|Boolean|Double|Integer)[ ]*[^ 0-9][a-zA-Z]*[0-9]*[ ]*[\(][ ]*[\)][ ]*[\{][ ]*(((----------)?(---batas-for---)?((for)[ ]*[\(][ ]*(((int)[ ])?[a-zA-Z_]*[0-9a-zA-Z]*[ ]*[\=][ ]*[0-9]*)?[ ]*[\;][ ]*([a-zA-Z_]*[0-9a-zA-Z]*[ ]*(([>=])|[\>]|[\<]|([<=])([==]))[ ]*[0-9]*[ ]*)?[ ]*[\;][ ]*([a-zA-Z_]*[0-9a-zA-Z]*(([\+][\+])|([\-][\-]))[ ]*)?[ ]*[\)][ ]*([\{][ ]*(----isi-for)?((unsigned[ ])?int[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*[0-9]*[ ]*)?[\;][ ]*)?[ ]*(String[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*["][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*["][ ]*)?[\;][ ]*)?(---isi-for)?[ ]*[\}])?[ ]*)?(--batas-for---)?((unsigned[ ])?int[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*[0-9]*[ ]*)?[\;][ ]*)?(----------)?((unsigned[ ])?(float|double)[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*?([0-9]*|([0-9]*(\.)[0-9]*))[ ]*)?[\;][ ]*)?(----------)?(String[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*["][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*["][ ]*)?[\;][ ]*)?(----------)?(char[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*[\'][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*[\'][ ]*)?[\;][ ]*)?)*(((System.)((exit[ ]*[\(][ ]*[0-9]{1,1}[ ]*[\)])|(-------)?(out.(println|print)[ ]*[\(][ ]*["][ ]*([0-9a-zA-Z!@$^&]*[ ]*["]|(([0-9a-zA-Z!@$^&*%]*[ ]*)*["](,)[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*))[ ]*[\)](-------)?)|(-------)?(out.toString[ ]*[\(][ ]*[\)])|(out.getClass[ ]*[\(][ ]*[\)])|(out.close[ ]*[\(][ ]*[\)])|(out.flush[ ]*[\(][ ]*[\)])|(load[ ]*[\(][ ]*[^ 0-9][a-zA-Z]*[0-9]*[\)]))(------)?[ ]*[\;][ ]*)?)*)*(----------)?[\}][ ]*)*)*?[ ]*(---hehe-)?(public[ ]static[ ]void[ ]main[ ]*[\(][ ]*String[ ]*(args[ ]*[\[][\]]|[\[][\]][ ]*args)[ ]*[\)][ ]*[\{][ ]*(new)?[ ]*[a-zA-Z]*[

Page 4: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 4

]*[\=][ ]*(new)[ ]*[a-zA-Z]*[ ]*[\(][\)][ ]*[\;][ ]*[\}][ ]*)(----batas--fungsi--)?(((public|private)[ ]*(String|Boolean|Double|Integer)[ ]*[^ 0-9][a-zA-Z]*[0-9]*[ ]*[\(][ ]*[\)][ ]*[\{][ ]*(((----------)?(---batas-for---)?((for)[ ]*[\(][ ]*(((int)[ ])?[a-zA-Z_]*[0-9a-zA-Z]*[ ]*[\=][ ]*[0-9]*)?[ ]*[\;][ ]*([a-zA-Z_]*[0-9a-zA-Z]*[ ]*(([>=])|[\>]|[\<]|([<=])([==]))[ ]*[0-9]*[ ]*)?[ ]*[\;][ ]*([a-zA-Z_]*[0-9a-zA-Z]*(([\+][\+])|([\-][\-]))[ ]*)?[ ]*[\)][ ]*([\{][ ]*(----isi-for)?((unsigned[ ])?int[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*[0-9]*[ ]*)?[\;][ ]*)?[ ]*(String[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*["][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*["][ ]*)?[\;][ ]*)?(---isi-for)?[ ]*[\}])?[ ]*)?(--batas-for---)?((unsigned[ ])?int[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*[0-9]*[ ]*)?[\;][ ]*)?(----------)?((unsigned[ ])?(float|double)[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*?([0-9]*|([0-9]*(\.)[0-9]*))[ ]*)?[\;][ ]*)?(----------)?(String[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*["][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*["][ ]*)?[\;][ ]*)?(----------)?(char[ ][ ]*[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*[ ]*([\=][ ]*[\'][ ]*[0-9A-Za-z\\\-\+\*\&\^\!]*[ ]*[\'][ ]*)?[\;][ ]*)?)*(((System.)((exit[ ]*[\(][ ]*[0-9]{1,1}[ ]*[\)])|(-------)?(out.(println|print)[ ]*[\(][ ]*["][ ]*([0-9a-zA-Z!@$^&]*[ ]*["]|(([0-9a-zA-Z!@$^&*%]*[ ]*)*["](,)[^ \,\-\+\@\\$\%\^\&\*\!0-9][a-zA-Z]*[0-9]*))[ ]*[\)](-------)?)|(-------)?(out.toString[ ]*[\(][ ]*[\)])|(out.getClass[ ]*[\(][ ]*[\)])|(out.close[ ]*[\(][ ]*[\)])|(out.flush[ ]*[\(][ ]*[\)])|(load[ ]*[\(][ ]*[^ 0-9][a-zA-Z]*[0-9]*[\)]))(------)?[ ]*[\;][ ]*)?)*)*(----------)?[\}][ ]*)*)*?(---batas---fungsi--)?[ ]*[\}]/) detektor() print z[0] print (".:\033[0;34mStatus\033[0m") print z[0] if(dmn!=0) print "> \033[0;34m""SUCCESS, compiled with no error""\033[0m" #0 gak , 1 kandel else print "> \033[1;31m""ERROR - MOHON CEK SOURCE CODE ANDA..""\033[0m" print } function pemisahan(){ kodingx=koding gsub(/[\;]/," ; ",kodingx) gsub(/[\{]/," { ",kodingx) gsub(/[\}]/," } ",kodingx) gsub(/[\(]/," ( ",kodingx) gsub(/[\)]/," ) ",kodingx) gsub(/[\,]/," , ",kodingx) gsub(/[\']/," ' ",kodingx) gsub(/[\"]/," \" ",kodingx) gsub(/[\|]/," | ",kodingx) gsub(/[\*]/," * ",kodingx) gsub(/[\=]/," = ",kodingx) gsub(/[\.]/," . ",kodingx) gsub(/[\+]/," + ",kodingx) gsub(/[\-]/," - ",kodingx) gsub(/[\>]/," > ",kodingx) gsub(/[\<]/," < ",kodingx) gsub(/[\%]/," % ",kodingx) split(kodingx,hasm," ")

Page 5: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 5

asm=length(hasm) if(asm%2!=0)asm=asm+1 for(i=1;i<=asm/2;i++){ printf (" \033[0;34m[%.2d]\033[0m= \033[0;35m%7.10s\033[0m\t\t\t\t\t\033[0;34m[%.2d]\033[0m= \033[0;35m%s\n\033[0m",i,hasm[i],i+asm/2,hasm[i+asm/2]) } print } function detektor(){ print z[0] print (".:\033[0;34mDetektor\033[0m") print z[0] for (i=1;i<=500;i++){ hm1=match(hasm[i],/(import)/) if(hm1!=0) print "> import statement - success" hm2=match(hasm[i],/(public|public)/) if(hm2!=0) print "> public statement - success" hm3=match(hasm[i],/(int)/) if(hm3!=0) print "> int statement - success" hm4=match(hasm[i],/(String)/) if(hm4!=0) print "> String statement - success" hm5=match(hasm[i],/(float)/) if(hm5!=0) print "> float variabel - success" hm6=match(hasm[i],/(class)/) if(hm6!=0) print "> class statement - success" hm7=match(hasm[i],/(char)/) if(hm7!=0) print "> char statement - success" hm8=match(hasm[i],/(System)/) if (hm8!=0) print "> System statement - success" # hm9=match(hasm[i],/(char)[ ][ ]*[a-zA-Z]*[0-9a-zA-Z]*[ ]*[\=][ ]*[\'][ ]*[a-zA-Z0-9+-][ ]*[\'][ ]*[\;]/) # if (hm9!=0) # print "> nilai char variabel - success [:9]" # hm10=match(hasm[i],/(int)[ ][ ]*[a-zA-Z]*[0-9a-zA-Z]*[ ]*[\=][ ]*[0-9]*[ ]*[\;]/) # if(hm10!=0) # print "> nilai int variabel - success [:10]" # hm11=match(hasm[i],/(float)[ ][ ]*[a-zA-Z]*[0-9a-zA-Z]*[ ]*[\=][ ]*[0-9]*[\.][0-9]*[ ]*[\;]/) # if(hm11!=0) # print "> nilai float variabel - success [:11]" # hm12=match(hasm[i],/(String)[ ][ ]*[a-zA-Z]*[0-9a-zA-Z]*[ ]*[\=][ ]*[\"][ ]*[a-zA-Z0-9+-]*[ ]*[\"][ ]*[\;]/)

Page 6: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 6

# if (hm12!=0) # print "> nilai String variabel - success [:12]" hm13=match(hasm[i],/(private)/) if(hm13!=0) print "> private statement - success" } if(dmn==0) print "\033[0;31m> matching - error\033[0m" else print "> matching - success" } function pengelompokan(){ kodingxx=koding split(kodingxx,kodepok,/[\;]/) ampun=length(kodepok) for(i=1;i<=ampun;i++){ # printf (" \033[0;34m[%.2d]\033[0m= \033[0;35m%s\n",i,kodepok[i]) } }

Preview “Kondisi ketika code.java Success” :

Keterangan :

Hasil yang ditampilkan didalam terminal tersebut merupakan table regular expression yang

Page 7: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 7

sebelumnya dibentuk didalam format string, setelah itu disimpan kedalam format array.

Berikut adalah format penulisan table tersebut :

lib = "Package import static private public int float char if else else if while do for ; == \\|\\| \\&\\& >=

<= = \\+\\+ \\-\\- \\* \\/ \\+ \\- \\^ \\% < > \\( \\) \\{ \\} \\[ \\] \\\"[^\"]*\\\" '.' \\w+\\.\\w+ return [A-

z_][A-z_0-9]* [-+]?\\d+\\.\\d+ [-+]?\\d+ ,"

Untuk mengubah string tersebut kedalam format array dapat memanfaatkan kondisi pemberian 1

space yang setelah itu dapat dipisahkan dengan memanfaatkan function split.

Seperti dalam baris program berikut : split(lib,reg," ")

Arti dari baris intruksi tersebut yaitu melakukan pemisahan suatu string berdasarkan kondisi 1 space

yang kemudian hasil yang telah dihasilkan disimpan kedalam suatu variable.

Keterangan :

Hasil tersebut merupakan pembacaan file code.java dengan menggunakan getline pada source code.

Dalam penggunaan getline untuk melakukan pembacaan keseluruhan file yang berbasis teks, dapat

dilakukan modifikasi dalam proses pembacaan. Dalam hal ini, programmer menggunakan array dalam

Page 8: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 8

media penyimpanan setiap baris isi dari file teks. Hasil yang telah disimpan kedalam array tersebut

kemudian dilakukan penggabungan dengan menggunakan variable lain,misalnya table. Kemudian

setiap langkah pengambilan data dari teks ditambahkan kedalam variable tersebut.

Isi file yang dihasilkan pada terminal tersebut, sama dengan form dari default file.

Source tersebut memiliki banyak whitespace yang dalam proses kompilasi, sebaiknya dihilangkan

sebagian, untuk mengurangi lama proses.

Untuk hal tersebut, maka dapat dilakukan dengan memanfaatkan function gsub untuk

menyederhanakan whitespace yang berlebihan, menjadi 1 space saja. Untuk melakukannya dapat

dilakukan dengan contoh code seperti berikut : gsub(/[ \n\t]+/," ",koding)

Memiliki arti bahwa mereplace string pada source code yang memiliki regex /[ \n\t]+/ dengan “ ”. dan

kemudian hasil replace tersebut disimpan kedalam variable yang bernama koding.

Keterangan :

Hasil tersebut merupakan pemisahan beberapa token, menjadi suatu object yang berdiri sendiri.

Object tersebut berfungsi untuk memudahkan dalam pengecekan error

Page 9: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 9

Keterangan :

Hasil tersebut mengindikasikan bahwa dari source code tujuan, berhasil decompile, dan tidak

ditemukan adanya error dalam beberapa analisa

Preview “Ketika Kondisi code.java terdapat error” :

Page 10: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 10

Keterangan :

Hasil tersebut merupakan pembacaan file code.java dengan menggunakan getline pada source code.

Dalam penggunaan getline untuk melakukan pembacaan keseluruhan file yang berbasis teks, dapat

dilakukan modifikasi dalam proses pembacaan. Dalam hal ini, programmer menggunakan array dalam

media penyimpanan setiap baris isi dari file teks. Hasil yang telah disimpan kedalam array tersebut

kemudian dilakukan penggabungan dengan menggunakan variable lain,misalnya table. Kemudian

setiap langkah pengambilan data dari teks ditambahkan kedalam variable tersebut.

Isi file yang dihasilkan pada terminal tersebut, sama dengan form dari default file.

Source tersebut memiliki banyak whitespace yang dalam proses kompilasi, sebaiknya dihilangkan

sebagian, untuk mengurangi lama proses.

Untuk hal tersebut, maka dapat dilakukan dengan memanfaatkan function gsub untuk

menyederhanakan whitespace yang berlebihan, menjadi 1 space saja. Untuk melakukannya dapat

dilakukan dengan contoh code seperti berikut : gsub(/[ \n\t]+/," ",koding)

Memiliki arti bahwa mereplace string pada source code yang memiliki regex /[ \n\t]+/ dengan “ ”. dan

kemudian hasil replace tersebut disimpan kedalam variable yang bernama koding.

Page 11: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 11

Keterangan :

Hasil tersebut merupakan pemisahan beberapa token, menjadi suatu object yang berdiri sendiri.

Object tersebut berfungsi untuk memudahkan dalam pengecekan error

Page 12: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 12

Keterangan :

Hasil tersebut mengindikasikan bahwa dari source code tujuan, terdapat error yang disebabkan

kesalahan penulisan syntax. Program awk tersebut baru mampu mendeteksi intruksi yang digunakan

telah sesuai dengan format penulisan program menggunakan bahasa java atau tidak

Analisa:

Dari source code diatas untuk mengimplementasikan penggunaan advanced feature dalam

pemrograman awk, diantaranya terdapat pada baris program berikut :

for(c=0;c<=500;c++){ getline isi[c] < name tabel=tabel""isi[c]"\n""\t" if(isi[c]==null) temp=temp+1 if(temp==4)c=500 }

Baris source code diatas merupakan implementasi dari advanced feature awk yang berhubungan

denga komunikasi file terhadap program. Komunikasi tersebut dalam hal pembacaan isi dari file yang

kemudian isi file tersebut disimpan kedalam suatu variable dalam program awk tersebut.

Untuk mendapatkan input berupa data file tersebut, maka dapat dilakukan dengan menggunakan

Page 13: AWK Programming 10 - Ahmad Reza Musthafa

2 – D4 Teknik Komputer| 7609040007 13

intruksi getline, intruksi ini mendukung pembacaan input dan juga pengiriman suatu data kedalam

suatu file yang berbasis teks.

Data-data yang terdapat pada suatu variable yang telah menerima data dari file yang berbasi teks

tersebut dapat diproses selanjutnya menggunakan beberapa baris intruksi dari program, seperti

melakukan penggabungan data pada masing-masing variable maupun penghapusan data yang tidak

diperlukan.

printf("> ") getline name print

Baris intruksi tersebut merupakan pemanfaatan advance feature dari awk programming, dimana input

yang diberikan oleh user melalui keyboard tidak berupa bilangan decimal, melainkan berupa string

yang dapat berupa banyak bentuk.

Dalam source tersebut sebenarnya berfungsi untuk menginputkan nama file beserta ekstensi dari file

tersebut, yang kemudian informasi string tersebut disimpan kedalam suatu variable yang bernama

name. setelah itu akan terjadi action berupa pemanfaatan intruksi print yang bertujuan untuk

memberikan whitespace untuk tampilan berikutnya.

Kesimpulan:

Dari praktikum diatas data ditarik kesimpulan bahwa, awk programming memiliki beberapa feature

yang khas untuk mendukung kegiatan programming maupun pada kegiatan eksekusi program.

Pemrograman berbasis awk dapat mendeteksi keseluruan input dengan beberapa tipe tanpa harus

mendeklarasikan keinginan untuk mendapatkan input dalam bentuk yang ditentukan. Secara default

input yang dimasukkan user pada program yang telah dieksekusi, akan disimpan kedalam suatu

variable yang bertipe string. Tipe data tersebut juga dapat diisi oleh tipe data selain string, misalnya

integer, float, double. Semua input akan diproses masing-masing.

Untuk isi variable yang hanya terdiri dari nilai decimal, maka variable tersebut dimasukkan kedalam

group integer, namun ketika terdapat penambahan nilai non decimal ke dalam variable tersebut,

maka variable akan berupa string. Dan nilai yang ditambahkan berupa integer tidak mereplace kondisi

string awal, melainkan menambahkan string baru pada baris atau kolom berikutnya